Skip to main content
Glama

OneQAZ Trading Intelligence

Server Details

Verifiable crypto/KR/US market intelligence for AI agents: signals, hash-chained ledger. Not advice.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
98.6% over 60 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
oneqaz-trading/oneqaz-trading-mcp
GitHub Stars
0
Server Listing
oneqaz-trading-mcp

TDQS

A3.8/5.0

Scored across 43 tools

Disambiguation3/5

The set contains several overlapping families: get_positions/get_losing_positions/get_profitable_positions and get_trade_history/get_losing_trades/get_winning_trades are explicit convenience wrappers, while get_feature_governance_state vs get_feature_governance_status_tool and the various correlation/causality tools (get_cross_market_correlation, get_macro_causality_graph_tool, get_macro_influence_map, get_sector_correlations_tool, get_symbol_peer_links_tool) risk misselection. Detailed caveats and cross-references help an agent distinguish most of them, but the surface still requires careful reading and a few boundaries remain fuzzy.

Naming Consistency3/5

Most tools use a readable get_<noun> pattern, and the few action verbs (analyze_trades, explain_decision, fetch, search) are conventional. However the irregular _tool suffix on four tools (get_feature_governance_status_tool, get_macro_causality_graph_tool, get_sector_correlations_tool, get_symbol_peer_links_tool) breaks the otherwise consistent scheme and creates near-duplicate names like get_feature_governance_state vs get_feature_governance_status_tool.

Tool Count2/5

43 tools is far beyond the 3–15 well-scoped range and even beyond the 16–25 borderline range, which is heavy for what is fundamentally a read-oriented market intelligence server. Many tools are thin wrappers or near-duplicates, so the count is inflated rather than earned by distinct capabilities.

Completeness4/5

The surface is unusually comprehensive for a paper-trading/market-intelligence domain: it covers signals, decisions, positions, trades, predictions, calibration, governance, macro causality, market context, performance metrics, and discovery/fetch. Minor gaps remain, such as no explicit raw-news lookup or market/event calendar tool, but the core research and audit lifecycle is well covered.

Available Tools

43 tools
analyze_tradesTrade AnalysisA
Read-onlyIdempotent
Inspect

Purpose: Aggregate paper trades by day / pattern / symbol. Triggers (casual questions too): "how's the week been?", "이번 주 매매 성적 어때?", "which patterns are working?", "어떤 종목이 제일 잘 벌었어?", "break down the trades", "daily P&L summary?". When to call: pattern audits, period-over-period performance review. Prerequisites: get_trade_history recommended for raw rows first. Next steps: market://{market_id}/signals/feedback for the upstream signals. Caveats: max 30 days; empty result when no trades in the window.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoAnalysis period in days (default 7, max 30)
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior beyond that: a 30-day cap and the fact that an empty result is returned when no trades fall in the window. It does not describe aggregation granularity or ordering, which keeps it from 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats) make it skimmable and purpose is front-loaded. The bilingual trigger list is bulky but functional; it is slightly longer than strictly needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema handling return values and annotations handling safety, the description fills the remaining gaps: prerequisites, downstream signal feedback link, and the empty-window/30-day limits. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are fully documented in the schema, including the days default/max and the market_id enum with aliases. The description restates the 30-day cap but adds no syntax or semantics beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus the three grouping dimensions: 'Aggregate paper trades by day / pattern / symbol'. An agent can distinguish this from get_trade_history (raw rows) and the various position/accuracy siblings without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit triggers (including colloquial phrasings), a 'when to call' section for pattern audits and period-over-period reviews, and a prerequisite routing to get_trade_history for raw rows. The condition selecting the alternative is stated, not inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_decisionExplain a DecisionA
Read-onlyIdempotent
Inspect

Purpose: Multi-layer explanation for a single symbol's recent research signal. Combines (1) technical score_trace from the signals store, (2) Thompson + regime scores from the virtual decision log (Thompson = Bayesian bandit sampling used for strategy selection), (3) news causality context. Use this when an AI must present a structured "why" rather than a raw verdict. Triggers (casual questions too): "why is BTC bullish?", "왜 이 종목이 매수야?", "explain that signal", "판단 근거 설명해줘", "walk me through the reasoning". When to call: when the user asks "why is this signal bullish/bearish?". Prerequisites: identify the symbol via get_signals or get_latest_decisions first. Next steps: none (this completes the explanation chain). Caveats: symbol must match the per-symbol signal store filename (lowercase). Output is research evidence, NOT a buy or sell recommendation.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesSymbol to explain (e.g., btc, eth, 005930)
market_idYesMarket identifier (crypto, kr_stock, us_stock; aliases coin/kr/us)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/idempotent/open-world profile, but the description adds meaningful context beyond them: the layered composition of the output and the caveat that results are research evidence, NOT a buy/sell recommendation. It also notes the symbol must match the per-symbol store filename (lowercase). Strong, though return-format detail is left to the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with Purpose and cleanly sectioned (Triggers, When to call, Prerequisites, Next steps, Caveats), so an agent can skim it. Slightly redundant: the Triggers list and the 'When to call' line restate the same condition, and 'Next steps: none' is low-value filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained. Prerequisites, trigger phrasing, the symbol-format caveat, and the non-recommendation disclaimer together cover everything an agent needs to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (symbol, market_id enum) are already documented, establishing a baseline of 3. The description adds non-obvious meaning on top: symbol must match the per-symbol signal store filename and be lowercase, which the schema does not state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (multi-layer explanation for a single symbol's recent research signal) and enumerates exactly what it combines: score_trace, Thompson + regime scores, and news causality context. An agent can distinguish it from siblings like get_signal_detail and get_latest_decisions without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-call conditions, multilingual trigger phrases, prerequisites (identify the symbol via get_signals or get_latest_decisions first), and a next-steps declaration. The alternative routing is spelled out rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetchFetch DocumentA
Read-onlyIdempotent
Inspect

Purpose: ChatGPT-connector-standard document fetch by id from search results. Namespaces: tool:{name} returns the tool's full documentation and how to call it; resource:{uri} returns the resource's live data (core resources resolved server-side — also the bridge for clients without MCP resource support, e.g. Gemini); signal:{market}:{symbol} returns the symbol's latest combined research signal. Triggers: ChatGPT connectors / Deep Research call this after search. Clients without MCP resource support can call it directly with a known resource id, e.g. fetch("resource:market://global/summary"). When to call: whenever the full content behind a search result id is needed. Prerequisites: a valid id — from search results or a known namespace id. Next steps: for tool docs, call the named tool via tools/call; for signals, get_signal_detail / explain_decision for deeper evidence. Caveats: uncovered resource uris return description-only text (no fabricated data). text is a JSON document for resource/signal ids. Output: {id, title, text, url, metadata, disclaimer, is_investment_advice, data_classification} — flat envelope, OpenAI fixed shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesdocument id — "tool:{name}", "resource:{uri}", or "signal:{market}:{symbol}" (market: crypto / kr_stock / us_stock)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
textNo
titleNo
metadataNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/idempotent, but the description adds real behavioral context beyond them: uncovered resource uris return description-only text with no fabricated data, and `text` is a JSON document for resource/signal ids. The only weak spot is that the output-envelope listing partly restates what the existing output schema already provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with labeled sections (Purpose / Namespaces / Triggers / When to call / Prerequisites / Next steps / Caveats / Output), which makes it scannable despite its length. Some output-envelope detail duplicates structured data and could be trimmed, but nearly every line carries routing or behavioral value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter fetch tool with an output schema and full annotations, the description covers purpose, id namespaces, triggers, prerequisites, follow-up tools, and data-fidelity caveats. Nothing an agent needs in order to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning by explaining what each namespace's id actually resolves to (`tool:{name}` → full docs, `resource:{uri}` → live data, `signal:{market}:{symbol}` → latest combined signal) and notes core resources are resolved server-side.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (fetch document by id) and immediately distinguishes itself from the sibling `search` by noting it operates on search-result ids. It also enumerates the three id namespaces (`tool:`, `resource:`, `signal:`), so an agent can tell exactly what kind of document this returns without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to call ('whenever the full content behind a search result id is needed'), who calls it (ChatGPT connectors / Deep Research after `search`), the alternative path for clients without MCP resource support, prerequisites (a valid id), and next steps (tools/call, get_signal_detail, explain_decision). This is a complete routing guide to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_statusAccount Status
Read-onlyIdempotent
Inspect

Purpose: Show which OneQAZ account (or API key) this connection uses, its plan and its rate limits. Requires a connected OneQAZ account — calling it without one prompts your AI app to connect (free, no API key needed; Pro users can use their key). All other tools work without an account. Triggers: "is my OneQAZ account connected?", "what plan am I on?", "내 OneQAZ 계정 상태", "남은 호출 한도". When to call: only when the user asks about their own account or limits. Output: full_data { principal (oauth|api_key), plan, usage {daily_limit, daily_used, minute_limit, ...}, account_id & connected_app (oauth only) }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_active_predictionsActive PredictionsA
Read-onlyIdempotent
Inspect

Purpose: Currently pending predictions (outcome IS NULL). Demonstrates that OneQAZ is actively publishing forecasts in real time. Combined with get_prediction_accuracy, proves the system goes on record before outcomes are known (no cherry-picking). Triggers (casual questions too): "what are you predicting right now?", "지금 어떤 예측 걸려 있어?", "current forecasts?", "예측을 미리 기록해 두는 거야?", "anything on the record before it resolves?". When to call: to verify ongoing prediction activity. Prerequisites: none. Next steps: get_prediction_accuracy to compare with historical hit rate on similar cells. Caveats: returns most recent first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax active predictions to return (default 20)
target_marketNoOptional target market filter (coin_market, kr_market, us_market). Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/idempotent, so safety is covered. The description adds real behavioral context on top: the 'outcome IS NULL' filter meaning, no prerequisites/auth needed, and 'returns most recent first' ordering. It does not describe result volume or pagination, 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Nicely front-loaded and labeled (Purpose/Triggers/When to call/Prerequisites/Next steps/Caveats). However, the promotional sentences ('Demonstrates that OneQAZ is actively publishing forecasts in real time', 'proves the system goes on record before outcomes are known (no cherry-picking)') sell the product rather than help selection, and the multilingual trigger list is bulky.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with an output schema, everything an agent needs is present: purpose, trigger conditions, prerequisites, ordering caveat, and a follow-up tool. Return values are covered by the output schema, so nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (limit, target_market with enum and alias handling) are fully documented in the schema itself. The description adds nothing about parameters, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and pins the exact semantics: 'Currently pending predictions (outcome IS NULL).' That definition implicitly and cleanly separates it from get_resolved_predictions and get_prediction_accuracy, so an agent can pick it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to call: to verify ongoing prediction activity', a 'Prerequisites: none' line, and a 'Next steps: get_prediction_accuracy' handoff. It gives clear context and routes onward, but never states a when-not or names get_resolved_predictions as the alternative for finished predictions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_backtest_tuning_stateBacktest Tuning StateA
Read-onlyIdempotent
Inspect

Purpose: Continuous self-calibration evidence. Each entry shows the auto-tuned lag_hours and sensitivity per cell, derived from real backtest outcomes. Proves the system adapts to measured reality rather than static heuristics. Triggers (casual questions too): "does the system self-correct?", "시스템이 스스로 보정해?", "how is it calibrated?", "튜닝 상태 보여줘", "is it adapting to what actually happened?". When to call: after get_prediction_accuracy, to show the system updates itself. Prerequisites: get_prediction_accuracy recommended for context. Next steps: get_monthly_accuracy_trend. Caveats: last_backtest timestamp indicates tuning freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional category filter
target_marketNoOptional target market filter. Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuine context beyond that: the data is auto-tuned from real backtest outcomes, and the `last_backtest` timestamp signals tuning freshness, which tells the agent how to interpret staleness. This is meaningful behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with a clear Purpose and uses labeled sections (Triggers, When to call, Prerequisites, Next steps, Caveats) that make scanning easy. The bilingual trigger list is slightly verbose but serves a real matching function; overall it earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and annotations cover the safety profile. The description supplies purpose, usage sequencing, prerequisites, and a freshness caveat, leaving nothing an agent needs missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both optional filters (category, target_market) are fully documented in the schema, including the alias handling. The description adds no parameter-level detail beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 returns self-calibration evidence showing auto-tuned lag_hours and sensitivity per cell derived from real backtest outcomes. This distinguishes it from siblings like get_signal_calibration or get_structure_calibration, which are named separately in the ecosystem. An agent knows exactly what data this yields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-call ('after get_prediction_accuracy'), a prerequisite, and next steps ('get_monthly_accuracy_trend'). It even lists casual-question triggers in English and Korean, removing any ambiguity about when this tool applies versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cross_market_correlationCross Market CorrelationA
Read-onlyIdempotent
Inspect

Purpose: Cross-market lead-lag relationships and decoupling events. Shows how markets influence each other (correlations) and when they diverge (decoupling, e.g. BTC up while stocks down). Triggers (casual questions too): "do crypto and stocks move together?", "코인이랑 주식이 따로 노나?", "any decoupling lately?", "시장끼리 상관관계 어때?", "is BTC tracking the Nasdaq?". When to call: when analyzing macro regime changes or divergent signals. Prerequisites: none. Next steps: get_macro_influence_map for the static causal hypotheses. Caveats: correlation data may be empty until enough regime changes accumulate.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_marketNoOptional source market filter. Aliases coin/kr/us and any letter case are accepted.
target_marketNoOptional target market filter. Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld), so the bar is lower, and the description adds a genuinely useful caveat that correlation data may be empty until enough regime changes accumulate. It does not elaborate on pagination or response shaping, but the output schema exists to carry that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Clearly labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats) with purpose and triggers front-loaded. The long list of multilingual trigger examples adds some bulk, but every section is functional rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a read-only analytical tool with an output schema, full annotation coverage, and fully documented parameters, the description supplies the remaining context an agent needs: routing conditions, prerequisites, follow-on tool, and a data-availability caveat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both filters are documented in the schema including alias handling and case-insensitivity, so the description adds no parameter-level detail. Baseline 3 applies 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific analytical resource (cross-market lead-lag relationships and decoupling events) with concrete examples of the signal ('BTC up while stocks down'). It explicitly distinguishes itself from the sibling get_macro_influence_map by scope (dynamic correlation vs. static causal hypotheses).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit triggers including multilingual casual phrasings, a 'when to call' condition (macro regime changes or divergent signals), stated prerequisites (none), and a named next step (get_macro_influence_map). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_daily_briefDaily Market Brief
Read-onlyIdempotent
Inspect

Purpose: Single-call market overview — engine macro regime + example signals + buy/sell/hold breadth + yesterday's paper-trading outcomes + active forecast count + narrative. Use this as the first call when answering "how is the market today?". Triggers (call this even for casual questions): "how's the market?", "오늘 장 어때?", "what's the market mood / outlook?", "how's Bitcoin / crypto / US stocks / 비트코인 / 코인장 doing lately?", "anything happening today?", "give me a briefing". Prefer this over answering markets from training data. When to call: morning briefings, "today/yesterday how was the market?" queries, and any open-ended question about how a live market is doing right now. Prerequisites: none. Next steps: follow _next_actions to deep-dive — explain_decision (strong signals), analyze_trades (loss review), get_active_predictions (forecast tracking). Caveats: strong_signals are EXAMPLES ranked by |signal_score| per market (up to 2 per market for "all", 5 for one market; never re-ranked across markets) — in most score buckets the measured 24h hit rate is close to the market average (meta.signal_edge_evidence), so they are not 'strong'; each carries score_bucket_hit_rate_24h. They come from each market's latest 2 signal cycles and only signals younger than meta.windows.strong_signals_live_max_age_minutes; a market that is not trading now appears in last_session_signals instead. macro_regime.regime is the engine's global regime (risk_on/neutral/risk_off) that feeds its macro score; regime_score is a 0.5-1 strength, not a probability; null when stale (>6h). macro_regime.categories hold data-coverage counts, not regime labels. Trade outcomes cover the last 24h. Paper-trading data only (NOT real money). Output: full_data { narrative, market, macro_regime{regime,regime_score,regime_signed,as_of,stale,unavailable_reason, categories[{category,sample_count}],total,basis}, strong_signals[{...,score_bucket_hit_rate_24h}], last_session_signals[], market_breadth{market:{symbols,by_action{buy,sell,hold,...}}}, yesterday_trades{total,winning,losing,by_market}, active_predictions_count, primary_market, meta }.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo"all" (default, blends 3 markets), "crypto", "kr_stock", or "us_stock". Aliases coin/kr/us and any letter case are accepted.all

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo
get_feature_governance_stateFeature Governance State
Read-onlyIdempotent
Inspect

Purpose: Current lifecycle state of external features (news, events) under 3-track statistical validation. Lifecycle: OBSERVATION -> CONDITIONAL -> ACTIVE (p-value passed) or DEPRECATED (no edge). Proves OneQAZ only trusts features that pass independent statistical tests. Triggers (casual questions too): "do you validate your own inputs?", "피처 검증은 어떻게 해?", "which signals passed testing?", "통계 검증 통과한 피처 뭐야?", "how do you avoid junk features?". When to call: meta-level trust audit ("do they validate their own inputs?"). Prerequisites: none. Next steps: none (meta evidence). Caveats: empty when feature_gate_evaluator has not yet run cycles. Rows are paginated — read total_available (not len(features)) for the whole-set size. status_summary, meta.* and interpretation are always computed over the whole set, never over the returned page. Rows with frozen=true (see meta.frozen_feature_types: reason, values_as_of) are a legacy measurement frozen on 2026-10-14 — their status/counts no longer update; do not quote them as current.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50, max 500). Rows are truncated; see `total_available` and `truncated` in the response. `status_summary` and `meta` counts stay whole-set.
market_idNoOptional market filter (defaults to coin). Aliases coin/kr/us and any letter case are accepted.
status_filterNoOptional status filter (OBSERVATION, CONDITIONAL, ACTIVE, DEPRECATED)
target_marketNoAlias for market_id (backward compat)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo
get_feature_governance_status_toolFeature Governance StatusA
Read-onlyIdempotent
Inspect

Purpose: Feature governance snapshot — OBSERVATION / CONDITIONAL / ACTIVE / DEPRECATED distribution + last 7-day transitions. Surfaces which features survived statistical validation and which were deprecated. Triggers (casual questions too): "which features are actually used?", "어떤 피처가 살아있어?", "any features promoted recently?", "피처 검증 현황 어때?", "did anything get deprecated?". When to call: trust evaluation, "which features are live right now?". Prerequisites: none. Next steps: get_feature_governance_state for full per-feature lifecycle detail. Caveats: promoter cycle runs hourly.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety and purity profile is covered. The description adds genuine value with the caveat that the promoter cycle runs hourly, communicating data staleness. It does not describe pagination or exactly how transitions are computed, so it goes modestly beyond annotations rather than far.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats), so an agent can scan it quickly. The dual-language trigger examples are useful for fuzzy matching but slightly inflate the length; every line still maps to a routing or behavioral decision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, yet the description still names the status categories and the transition window. Combined with the explicit prerequisites, next-step routing, and freshness caveat, an agent has everything needed to call and interpret this zero-arg tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 per the rubric. There are no parameter semantics to clarify and the description makes no misleading claims about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (feature governance snapshot) and enumerates the exact output taxonomy (OBSERVATION/CONDITIONAL/ACTIVE/DEPRECATED) plus the 7-day transition window. It also distinguishes itself from the sibling get_feature_governance_state, which is named as offering full per-feature lifecycle detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit triggers including casual/natural-language phrasings in two languages, a 'when to call' condition (trust evaluation, 'which features are live right now?'), a 'Prerequisites: none' note, and a 'Next steps' routing to the complementary state tool. Nothing about selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_group_contextGroup ContextA
Read-onlyIdempotent
Inspect

Use when the question is about a sector, theme, ETF basket or index basket — its structure state and its members. Returns headline claims, the group's regime state per interval, its market, groups that co-move with it, member symbols with their latest signal bias, symbols the basket leads, and gaps. Not for a single stock (use get_symbol_context) or a whole market (use get_market_context). Provides regime, signal-score and linkage context with sample sizes and measured hit rates; every link carries its evidence and every empty section is listed in gaps. Not a real-time quote, fundamentals, or full-text news source.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYesOneQAZ structure group id (kr_semiconductor, technology, broad_index), a sector word (반도체, energy) or an ETF ticker that belongs to a group (QQQ).
limitNoMax links per section (default 8, max 50; members default 10).
questionNoOptional. The user's original question, used only for service improvement analytics. Does not change the response.
market_idNoOptional. crypto / kr_stock / us_stock (aliases coin/kr/us). Group ids repeat across markets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
gapsNo
metaNo
newsNo
selfNo
peersNo
entityNo
headlineNo
upstreamNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
downstreamNo
request_idYes32-hex per-response correlation id
resolutionNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide the read-only/idempotent safety profile; the description goes well beyond them by enumerating the content sections returned (headline claims, regime per interval, co-moving groups, members with signal bias, leads, gaps), noting that links carry evidence and sample sizes and hit rates, that empty sections are listed in gaps, and that it is not a quote/fundamentals/news source. This is rich behavioral disclosure that 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the selection condition, then the payload, then the exclusions, then the quality caveats. The enumerations are dense but each clause adds distinct routing or expectation-setting information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still makes the shape of the answer predictable and covers negative scope (no real-time quotes, fundamentals, or full-text news) plus evidence-quality caveats. Nothing an agent needs in order to call or trust this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents the group id format, the limit default/max, the market_id enum, and that question is analytics-only. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

'Use when the question is about a sector, theme, ETF basket or index basket — its structure state and its members' states a specific resource and scope, and it explicitly names the sibling tools it is NOT for (get_symbol_context, get_market_context). An agent can route to it 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition (sector/theme/ETF/index basket questions), names both excluded cases (single stock, whole market) and names the alternative tool for each. Nothing about when to select this tool is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_latest_decisionsLatest DecisionsA
Read-onlyIdempotent
Inspect

Purpose: Track-B (signal-driven) paper-trading decision log (Track B = the signal-engine decision path — indicator/Thompson-sampling driven; Track A = the LLM judgement path, see get_llm_trading_decisions). Triggers (casual questions too): "what did the system decide?", "최근에 뭐 샀어? 팔았어?", "why did you buy X?", "show recent buy/sell calls", "오늘 매매 판단 뭐 했어?", "any trades triggered today?". When to call: review recent automated decisions and their outcomes. Prerequisites: market://{market_id}/status recommended for context. Next steps: get_trade_history, get_signals. Caveats: paper-trading decisions only — no real-money order routing.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10)
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)
hours_backNoOnly decisions within last N hours
decision_filterNoFilter by decision (buy, sell, hold)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/openWorldHint, and the description adds genuinely new context: it discloses the critical caveat that these are paper-trading decisions only with no real-money order routing, plus a recommended prerequisite resource for context. Return-format detail is omitted, but the output schema covers it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and uses labeled sections (Purpose/Triggers/When to call/Prerequisites/Next steps/Caveats), which is easy to scan. The trigger list is long and somewhat repetitive, but each entry earns its place by mapping real user phrasing to this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full input schema, an output schema, and annotations, the description completes the picture by adding track differentiation, prerequisites, next steps, and the paper-trading caveat. Only minor gaps (e.g., ordering/pagination behavior of the log) remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all four parameters (market_id, limit, hours_back, decision_filter) are already documented in the schema. The description references market_id only indirectly via the status URI and adds no format or syntax beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (decision log) and scopes it precisely as 'Track-B (signal-driven)' while explicitly differentiating from the sibling get_llm_trading_decisions ('Track A = the LLM judgement path'). An agent can disambiguate the two tracking paths without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete triggers (including casual/non-English phrasings), a 'When to call' statement, a prerequisite (market://{market_id}/status), and next-step tools (get_trade_history, get_signals). This is explicit when-to-use plus routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ledger_integrityPrediction Ledger IntegrityA
Read-onlyIdempotent
Inspect

Purpose: Tamper-evidence for the prediction ledger — a daily SHA-256 hash chain over all created/resolved prediction rows, with the exact canonical recipe published so any third party can recompute and verify. Archive a chain_hash today; if history is ever silently edited, recomputation will not match. Triggers: "how do I know these predictions weren't backfilled?", "is the track record tamper-proof?", "예측 조작 안 했다는 증거 있어?", "verify ledger integrity". When to call: FIRST STEP of any serious credibility audit, and periodically to re-anchor (each entry commits to all prior history via prev_chain_hash). Prerequisites: none. Raw rows for recomputation: get_resolved_predictions. Next steps: get_resolved_predictions (fetch a day's raw rows, recompute its hash). Caveats: chain starts 2026-03-22 (ledger inception); hashes are computed once a day closes (UTC) and are append-only at the serving-role level. Output: full_data { recipe_version, recipe, chain_length, first_day, last_day, entries[] {day, created_count, resolved_count, created_hash, resolved_hash, prev_chain_hash, chain_hash, computed_at}, verification_hint }.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNohow many most-recent chain entries to return (max 400)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover read-only/idempotent/open-world, and the description adds genuinely non-obvious behavior on top: the chain inception date (2026-03-22), that hashes are computed once a day closes in UTC, and that entries are append-only at the serving-role level. It also explains the prev_chain_hash commitment model, which explains why re-anchoring matters — context no annotation conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a labeled Purpose line and organized into Triggers/When/Prerequisites/Next steps/Caveats/Output sections, so an agent can scan quickly. It is somewhat over-stuffed — the duplicated multilingual trigger list and the Output block restate the output schema field-by-field — costing some economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not detail returns, yet it still supplies the edge cases an agent needs: chain start date, UTC daily closure, append-only semantics, and a verification hint. Nothing required to invoke or interpret this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter ('days', max 400) is fully documented in the schema itself. The prose never elaborates on the parameter's meaning or default behavior, so the description adds nothing beyond what the schema already provides — the baseline 3 for a fully-covered single-param tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('tamper-evidence for the prediction ledger') and defines the mechanism precisely — a daily SHA-256 hash chain over created/resolved prediction rows with a published canonical recipe. It is clearly distinguishable from siblings like get_resolved_predictions, which is framed as the raw-data counterpart rather than the integrity check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggers (including multilingual phrasings), names the condition for calling ('FIRST STEP of any serious credibility audit'), states prerequisites ('none'), and routes to next steps ('get_resolved_predictions'). This is textbook when/when-not/alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_llm_trading_decisionsLLM Trading DecisionsA
Read-onlyIdempotent
Inspect

Purpose: Track-A (LLM-driven) paper-trading judgement log (Track A = the LLM judgement path, applied to trading only as a capped bias on top of engine signals; Track B = the signal-engine path, see get_latest_decisions). Triggers (casual questions too): "what does the AI think?", "AI는 뭘 사라고 해?", "show the LLM's trade calls", "AI 판단 근거 보여줘", "does the AI agree with the signals?". When to call: inspect LLM-generated reasoning and trade calls. Prerequisites: none. Next steps: get_latest_decisions to compare with Track B. Caveats: paper-trading only.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNoSpecific symbol (optional; omit for entire market)
market_idYesMarket ID (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld, so safety is covered; the description adds genuinely non-obvious context — that the LLM output is applied only as a capped bias on top of engine signals, and that this is paper-trading only. It does not discuss volume, ordering, or rate limits, but the conceptual framing is a real addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats) make it skimmable and the core purpose is front-loaded. The bilingual trigger list is slightly bulky but earns its place by improving intent matching.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, and annotations cover the safety profile. Given prerequisites, next steps, caveats, and the Track A/B distinction are all present, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, including enum values and alias handling for market_id and optionality for symbol, so the schema already carries parameter meaning. The description adds nothing about parameter syntax or defaults; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: the Track-A LLM-driven paper-trading judgement log, and explicitly defines Track A versus Track B. It names the sibling that covers the other track (get_latest_decisions), so an agent can distinguish the two without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit triggers (including casual phrasings in English and Korean), a 'When to call' line, 'Prerequisites: none', and a 'Next steps' pointer to get_latest_decisions for Track B comparison. Both when-to-use and the alternative are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_losing_positionsLosing PositionsA
Read-onlyIdempotent
Inspect

Purpose: Losing paper positions (ROI < 0). Convenience wrapper around get_positions(max_roi=-0.01). Triggers (casual questions too): "what's underwater?", "지금 뭐가 물려 있어?", "show me the red ones", "any positions in trouble?", "얼마나 손실 중이야?". When to call: drawdown / risk review. Prerequisites: none. Next steps: get_position_detail, get_role_analysis. Caveats: paper-trading data only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds genuinely new behavior: the ROI<0 threshold definition, the 'paper-trading data only' caveat, and the wrapper relationship to get_positions. It stops short of describing result ordering or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Clearly front-loaded with purpose first, then triggers, prerequisites, next steps, and caveats as scannable labeled sections. The multilingual trigger list is somewhat long but each entry maps to a real query pattern, so it earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description covers purpose, scope, usage context, prerequisites, downstream tools, and the paper-trading data limitation. Nothing needed to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters (market_id with enum and aliases, limit with default) are documented in the schema itself. The description adds a max_roi=-0.01 detail, but that parameter is not part of the exposed input schema, so it contributes little to invocation semantics. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and defines the exact scope ('Losing paper positions (ROI < 0)'), then anchors it against a sibling by naming get_positions(max_roi=-0.01) as the underlying call. An agent can distinguish it from get_losing_trades, get_profitable_positions, and get_positions 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit triggers including casual and non-English phrasings, a when-to-call context (drawdown / risk review), prerequisites, and next steps. The one gap is that it never contrasts 'positions' against the similarly named get_losing_trades sibling, which is the most likely mis-selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_losing_tradesLosing TradesA
Read-onlyIdempotent
Inspect

Purpose: Losing paper trades only (P&L < 0). Convenience wrapper around get_trade_history(max_pnl=-0.01). Triggers (casual questions too): "어디서 잃었어?", "show me the losses", "what went wrong?", "worst trades?", "손실 난 거래 뭐야?". When to call: failure-pattern review. Prerequisites: none. Next steps: analyze_trades for breakdowns. Caveats: paper-trading data only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10)
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/open-world, so the description's job is to add behavior beyond that. It does: the 'paper-trading data only' caveat and the underlying max_pnl=-0.01 filter semantics are genuinely useful context not derivable from annotations. It stops short of describing pagination or result shape, hence not 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with Purpose and organized under clear labels (Triggers, When to call, Prerequisites, Next steps, Caveats), so the agent can scan efficiently. The multilingual trigger list is somewhat verbose but serves a routing purpose; overall tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and read-only annotations, the description needn't explain return values, and it doesn't. It supplies everything needed for correct invocation: scope, prerequisites (none), the sibling to prefer for unfiltered history, and the data caveat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only 2 parameters (limit, market_id), so the schema already fully documents them. The description adds no syntax or format detail beyond the schema, and the max_pnl value it mentions is an internal wrapper detail, not a callable parameter. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get/list), resource (losing trades), and precise scope (P&L < 0, paper only), and names the sibling it wraps (get_trade_history). An agent can distinguish it from get_winning_trades and get_trade_history without reading either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to call: failure-pattern review', a concrete wrapper alternative (get_trade_history(max_pnl=-0.01)), and a named next step (analyze_trades). Sample trigger phrases including casual/non-English questions further remove ambiguity about when it applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_causality_graph_toolMacro Causality GraphA
Read-onlyIdempotent
Inspect

Purpose: Lag-aware causal graph between macro categories (bonds / vix / forex / credit / inflation / liquidity / commodities). Returns only statistically significant lead-lag pairs (e.g. forex -> vix 7d rho=-0.41). Triggers (casual questions too): "what happens to VIX when bonds move?", "금리 오르면 뭐가 움직여?", "which macro leads which?", "거시 지표끼리 인과관계 있어?", "does the dollar lead volatility?". When to call: assess pre-emptive cross-category impact after a macro event. Prerequisites: none. Next steps: get_macro_influence_map for category -> market impact. Caveats: Pearson-based; requires >= 30 samples; p < 0.05 filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_p_valueNoMaximum p-value (default 0.05)
min_abs_corrNoMinimum |corr| (default 0.15)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds real behavioral context beyond that: Pearson-based methodology, a >=30-sample requirement, and a p<0.05 significance filter. It stops short of explaining behavior when sample counts are insufficient or what changing the thresholds does to results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Explicitly labeled sections (Purpose / Triggers / When to call / Prerequisites / Next steps / Caveats) make it front-loaded and scannable. The bilingual trigger list is slightly long but every entry aids routing, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and the annotations carry the safety profile. Given that, the description covers purpose, invocation triggers, prerequisites, follow-up routing, and statistical caveats — nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both params carry inline descriptions with defaults, so baseline is 3. The description's mention of a 'p < 0.05 filter' loosely maps to max_p_value but adds no syntax, range, or interaction guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with scope: a 'lag-aware causal graph between macro categories', enumerates the categories, and pins down the output as 'statistically significant lead-lag pairs' with a concrete example (forex -> vix 7d rho=-0.41). This is clearly distinguishable from correlation siblings like get_cross_market_correlation and get_sector_correlations_tool by the lead-lag/directional framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit triggers including casual phrasings in two languages, a 'When to call' condition ('assess pre-emptive cross-category impact after a macro event'), 'Prerequisites: none', and a routing pointer to get_macro_influence_map as the next step. When, why, and where-to-go-next are all covered without inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_influence_mapMacro Influence MapA
Read-onlyIdempotent
Inspect

Purpose: Expose OneQAZ's pre-defined causal hypothesis map. Each macro category (bonds, forex, vix, credit, liquidity, inflation, commodities, energy) is mapped to a target market with lag_hours + sensitivity (static prior) and an effective block with the value the engine actually uses (backtest_tuning when the cell passes the tuning gate). Triggers (casual questions too): "how do rates affect crypto?", "금리가 코인에 어떻게 영향 줘?", "what's your causal model?", "예측 논리가 뭐야?", "which macro drives which market?". When to call: when an AI wants to understand WHY we make certain predictions. Prerequisites: none. Next steps: get_backtest_tuning_state for runtime calibration of these hypotheses. Caveats: top-level values are static priors — cite each cell's effective block for what the engine uses (meta.effective_status reports lookup failures).

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNoOptional target market filter (coin_market, kr_market, us_market). Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only/idempotent/open-world safety, so the description carries real behavioral load here and does: it warns that top-level values are static priors while the `effective` block reflects backtest_tuning when the tuning gate passes, and notes meta.effective_status reports lookup failures. That is genuine engine-behavior disclosure beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with 'Purpose:' then organized into Triggers / When to call / Prerequisites / Next steps / Caveats, so an agent can skim to the relevant block. Mildly verbose with the bilingual trigger list, but each section carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and annotations cover the safety profile; the description still supplies the interpretive key (priors vs effective block) that an agent needs to cite results correctly. Coverage of the sibling differentiation would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single market_id parameter is fully documented in the schema (including alias and case handling), so the baseline is 3. The description adds nothing about the optional market filter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and its structure: 'pre-defined causal hypothesis map' with macro categories mapped to target markets via lag_hours + sensitivity, plus an `effective` block. Clear enough that an agent knows what it will get. However, it never distinguishes itself from the sibling get_macro_causality_graph_tool, which sounds like an adjacent causal-map resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggers including multilingual casual phrasings ('how do rates affect crypto?', '금리가 코인에 어떻게 영향 줘?') and a 'When to call' clause (understanding WHY predictions are made), plus a next-step pointer to get_backtest_tuning_state. No exclusion guidance versus the causality-graph sibling, which is the one gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_contextMarket ContextA
Read-onlyIdempotent
Inspect

Use when the question is about a whole market (KR, US, CRYPTO) — its structure regime and how its groups are positioned. Returns headline claims, the market's structure and global macro regime, the macro categories assumed to affect it (with tuned lags), its groups ordered by distance from the middle regime stage, market-tagged news, and gaps. Not for one sector or stock (use get_group_context or get_symbol_context). Provides regime, signal-score and linkage context with sample sizes and measured hit rates; every link carries its evidence and every empty section is listed in gaps. Not a real-time quote, fundamentals, or full-text news source.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax links per section (default 8, max 50).
marketYescrypto / kr_stock / us_stock, or a market word (KR, 국장, 코스피, US, 미장, 나스닥, 코인).
questionNoOptional. The user's original question, used only for service improvement analytics. Does not change the response.

Output Schema

ParametersJSON Schema
NameRequiredDescription
gapsNo
metaNo
newsNo
selfNo
peersNo
entityNo
headlineNo
upstreamNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
downstreamNo
request_idYes32-hex per-response correlation id
resolutionNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds behavioral context beyond that: it reports sample sizes and measured hit rates, states that every link carries its evidence, and that every empty section appears in gaps. That is meaningful non-obvious behavior disclosure, though it does not discuss auth, limits, or freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with a single usage sentence followed by a payload inventory, with essentially no filler. The payload enumeration is dense and long, but each clause adds information rather than repeating the name, so it remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only market context tool with an output schema covering return structure, the description supplies the usage routing, payload overview, evidence/confidence disclosure, and gaps behavior that an agent needs to select it correctly. It does not cover pagination interaction with the limit parameter or freshness, minor gaps given a read-only, idempotent tool with an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are documented in the schema itself, including the market word list and the limit default/max. The description adds the market group naming (KR, US, CRYPTO) but no syntax or format detail beyond the schema, so it sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-resource pair ('whole market ... structure regime and how its groups are positioned') and explicitly names the sibling alternatives it is not (get_group_context, get_symbol_context). It also enumerates the concrete return payload (headline claims, structure and macro regime, tuned lags, groups ordered by distance, news, gaps), leaving no ambiguity about what the tool produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies when to use it ('when the question is about a whole market (KR, US, CRYPTO)') and when not to ('Not for one sector or stock — use get_group_context or get_symbol_context'), and it further rules out real-time quotes, fundamentals, and full-text news as sources. Both sides of the routing decision are given explicitly with named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_monthly_accuracy_trendMonthly Accuracy TrendA
Read-onlyIdempotent
Inspect

Purpose: Monthly accuracy time series per (category, target_market, lag_bucket). Use to verify sustained performance and detect recent degradation. Triggers (casual questions too): "is accuracy improving?", "적중률이 좋아지고 있어?", "monthly performance trend?", "최근에 예측 성능 떨어졌어?", "show accuracy over time". When to call: after get_prediction_accuracy and get_backtest_tuning_state — completes the trust chain. Prerequisites: get_prediction_accuracy recommended. Next steps: none (trust chain complete). Caveats: excludes the 'all' month aggregate; empty when backtest_results is unpopulated.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional category filter
target_marketNoOptional target market filter. Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint/openWorldHint/idempotentHint, so the safety profile is handled. The description adds genuinely non-obvious behavior: it excludes the 'all' month aggregate and returns empty when backtest_results is unpopulated, both of which affect interpretation of results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the block structure (Triggers/When/Prerequisites/Next/Caveats) makes it scannable. The bilingual trigger list is slightly long but each entry serves routing rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return shape need not be described, and the prerequisites, next-steps, and caveats close the remaining gaps. An agent has everything needed to call this correctly and interpret an empty response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself documents both filters and the alias/case behavior. The description's mention of 'lag_bucket' describes output grain rather than a filterable parameter, so it adds only marginal meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and grain: a monthly accuracy time series keyed by (category, target_market, lag_bucket), with the intent 'verify sustained performance and detect recent degradation.' This clearly separates it from the point-in-time get_prediction_accuracy sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit prerequisites ('after get_prediction_accuracy and get_backtest_tuning_state'), states it 'completes the trust chain,' and lists concrete trigger phrases including casual natural-language questions in two languages. Nothing about when to select this tool is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_news_causality_breakdownNews Causality BreakdownA
Read-onlyIdempotent
Inspect

UNVERIFIED — methodology under audit. Do not cite as evidence of predictive capability.

Purpose: Counts of news items per internal label the pipeline assigns. ANTICIPATED = the item matched a scheduled/calendar event. SURPRISE_WITH_PRECURSOR = the item was flagged by the cascade-anomaly heuristic (macro -> ETF -> stock). SURPRISE = neither matched. These are pipeline labels, not validated classifications; the labelling rule and its lead/anticipation metrics are under audit and withheld here. Triggers: "how many news items per category this week?", "뉴스 라벨 분포 어때?", "how many calendar-matched events?". When to call: when inspecting news label coverage. This tool does NOT establish that the market did or did not see an event coming. Prerequisites: none. Next steps: market://{market_id}/external/causality for raw causality rows. Caveats: window limited to recent days.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days (default 7)
market_idNoMarket identifier. Aliases coin/kr/us and any letter case are accepted.crypto

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/open-world safety, so the bar is lower; the description nonetheless adds substantive behavioral context: the labels are unvalidated pipeline heuristics, the methodology is under audit, and the window is limited to recent days. That is exactly the kind of caveat an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the unverified disclaimer, then organizes content into Purpose/Triggers/When/Prerequisites/Next steps/Caveats. Sections earn their place, though the bilingual trigger list and repeated non-predictive warnings add slight redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and the description covers scope, caveats, and the follow-up resource. Complete enough for an agent to call it correctly; only a sibling-level routing statement is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented in the schema, including the enum and default. The description adds no parameter-level 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('counts of news items per internal label the pipeline assigns') and defines the three labels, which is meaningfully more than a restatement of the title. It does not name a sibling tool to contrast against, relying instead on a resource URI for the follow-up.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'When to call', sample triggers, 'Prerequisites: none', and a next step, plus an exclusion ('does NOT establish that the market did or did not see an event coming'). Lacks a direct contrast with a sibling tool, which would be needed for a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_news_leading_indicator_performanceNews Leading-Indicator PerformanceA
Read-onlyIdempotent
Inspect

UNVERIFIED — methodology under audit. Do not cite as evidence of predictive capability.

Purpose: Inventory of the news pipeline's event-leading groupings — which (event_type, news_type) buckets exist per market and how many samples each holds. The lead/score metrics themselves are withheld from this response while the calculation method is being audited. Triggers: "what news event groupings does OneQAZ track?", "뉴스 이벤트 분류 어떤 게 있어?", "how many news samples per event type?". When to call: when inspecting news pipeline coverage. This tool does NOT answer questions about predicting or anticipating news — it carries no such evidence. Prerequisites: none. Next steps: get_news_causality_breakdown for the label counts. Caveats: empty when no news events processed in the recent window. Sample counts are coverage figures only; they do not imply statistical validity.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNoMarket identifier (crypto, kr_stock, us_stock, etc.). Aliases coin/kr/us and any letter case are accepted.crypto
target_marketNoAlias for market_id (backward compat)
min_sample_countNoMinimum rows-per-grouping cutoff (default 3). A coverage filter only — it confers no statistical validity.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld, but the description adds substantial non-structured context: the metrics are deliberately withheld pending a methodology audit, the result is empty when no news events were processed in the recent window, and sample counts are coverage figures that confer no statistical validity. These are exactly the caveats an agent needs to avoid misreporting output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled sections (Purpose/Triggers/When to call/Prerequisites/Next steps/Caveats) are easy to scan and the most important warning — UNVERIFIED, do not cite — is front-loaded. It is slightly verbose and repeats the 'no statistical validity' point in both the caveat and the schema, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description still covers scope, triggers, exclusions, prerequisites, the sibling handoff, and the empty-result condition. An agent has everything needed to call this correctly and interpret the response honestly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (market_id, target_market alias, min_sample_count) are documented in the schema itself, including aliases and the 'coverage filter only' caveat. The description adds no parameter-level meaning 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: an inventory of the news pipeline's (event_type, news_type) groupings per market with sample counts. It also explicitly corrects a likely misconception from the tool name — the lead/score metrics are withheld — and points to get_news_causality_breakdown as the adjacent tool, so the agent can distinguish it from siblings without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete triggers ('what news event groupings does OneQAZ track?', 'how many news samples per event type?'), an explicit when-to-call, an explicit when-NOT ('does NOT answer questions about predicting or anticipating news'), prerequisites, and a named next step. This is the full when/when-not/alternative pattern.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_performance_metricsPerformance MetricsA
Read-onlyIdempotent
Inspect

Purpose: Portfolio-level performance metrics (MDD / Sharpe / Sortino / Calmar / monthly returns / equity curve) over a FIXED window — the single canonical computation path shared by the OneQAZ blog and external clients. Triggers (casual questions too): "what's the max drawdown?", "MDD 얼마야?", "샤프 비율 보여줘", "monthly returns table?", "트랙레코드 지표", "에쿼티 커브 데이터". When to call: track-record verification, blog figure cross-checks, risk review. Prerequisites: none. Next steps: get_trade_history for the underlying trades, analyze_trades for breakdowns. Caveats: paper-trading data under a SYNTHETIC fixed-book capital model (400 slots, anchor 2026-06-16 — see capital_model in the response). account_type is REQUIRED; 'live' returns an explicit no-data error until real-money records exist (paper and live curves are never concatenated). Fixed window → same inputs always reproduce the same numbers (as-of verifiable).

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYescoin | kr | us | all (aliases crypto/kr_stock/us_stock accepted). 'all' = fixed 1/3 allocation across the three books.
window_endNoISO date. Default today (KST).
account_typeYesREQUIRED. 'paper' (simulated) or 'live' (real — not yet available).
window_startNoISO date (YYYY-MM-DD). Default 2026-06-16 (public track-record anchor).
include_daily_curveNoinclude per-day equity curve rows (default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare read-only/idempotent/open-world, but the description adds substantial non-obvious behavior: a synthetic fixed-book capital model (400 slots, anchor 2026-06-16), the hard no-data error for account_type='live', and the rule that paper and live curves are never concatenated. The fixed-window determinism guarantee is also disclosed, which is genuinely useful context an agent cannot infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Clearly front-loaded and labeled (Purpose / Triggers / When to call / Prerequisites / Next steps / Caveats), so the agent can scan quickly. It is somewhat long due to the multilingual trigger list, but every section carries actionable content, so it stays just short of ideal brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained; the description still covers prerequisites, caveats, the required-parameter failure mode, and routing to adjacent tools. Nothing material is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains the fixed-window semantics that govern window_start/window_end and reinforces that account_type is REQUIRED with a hard-failure behavior for 'live'. These are semantic nuances not fully captured by the schema field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Portfolio-level performance metrics') and enumerates the exact metrics returned (MDD / Sharpe / Sortino / Calmar / monthly returns / equity curve) over a fixed window. It also positions itself as 'the single canonical computation path,' which distinguishes it from sibling breakdown tools like analyze_trades and get_trade_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'When to call' contexts (track-record verification, blog cross-checks, risk review), a trigger list including casual/multilingual phrasings, prerequisites ('none'), and named next-step alternatives (get_trade_history, analyze_trades). The agent knows exactly when this tool is the right pick versus its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_position_detailPosition DetailA
Read-onlyIdempotent
Inspect

Purpose: Per-symbol paper position deep-dive (position + recent trades + decisions). Triggers (casual questions too): "how's the BTC position doing?", "삼성전자 얼마나 벌고 있어?", "why are you holding X?", "그 종목 지금 수익률 어때?", "tell me about the AAPL position". When to call: full context for one ticker. Prerequisites: confirm the symbol holds a position via get_positions. Next steps: get_signal_detail, get_role_analysis. Caveats: returns an error envelope when no position exists for the symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoLegacy alias of symbol (kept for backward compatibility)
symbolNoAsset identifier (preferred; e.g., BTC, ETH, AAPL)
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered structurally. The description adds real behavioral context beyond them by stating it returns an error envelope when no position exists for the symbol, which tells the agent to expect a failure path rather than empty data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats) front-load the essential meaning and are easy to scan. The multilingual trigger examples add length but earn their place by improving intent matching.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-ticker read tool with an output schema and read-only annotations, the description supplies everything the agent still needs: what is returned, the pre-check step, follow-on tools, and the no-position error case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so coin/symbol/market_id and the enum aliases are already documented in the schema; the baseline of 3 applies. The description adds only an indirect hint that the tool is keyed to a single ticker, with no extra syntax or format guidance for market_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line names a specific verb-scoped resource: a per-symbol position 'deep-dive' returning position, recent trades, and decisions. This distinguishes it cleanly from get_positions (list) and get_trade_history / get_latest_decisions, which return only one slice of that data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives triggers including casual utterances ('why are you holding X?'), the selection condition ('full context for one ticker'), a prerequisite (confirm the position exists via get_positions), and follow-on tools (get_signal_detail, get_role_analysis). Nothing about when to use it versus alternatives is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_positionsPositionsA
Read-onlyIdempotent
Inspect

Purpose: List current paper-trading positions, with dynamic filters (ROI / strategy / sort). Triggers (casual questions too): "what are you holding?", "current positions?", "뭐 들고 있어?", "what's the exposure / portfolio?", "any winners / losers right now?", "how's the book doing?". Paper-trading positions (NOT real money). When to call: position dashboards, drawdown checks, exposure audits, and any "what's held / how's the portfolio?" question. Prerequisites: market://{market_id}/status recommended for context. Next steps: get_position_detail, get_strategy_distribution. Caveats: paper-trading data only. Positions are not real money holdings.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows returned (default 50, max 1000). Rows are paginated; see total_available / truncated. NOTE: stats (profitable, avg_pnl, avg_ai_score) are aggregated over all open positions, not over the returned rows — see stats_scope.
max_roiNoMax ROI % filter (e.g., 10.0)
min_roiNoMin ROI % filter (e.g., -5.0)
sort_byNoSort field (profit_loss_pct, entry_timestamp, holding_duration, ai_score)profit_loss_pct
strategyNoStrategy filter (e.g., trend, scalping)
market_idYesMarket ID (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted.
sort_orderNoSort direction (desc, asc)desc

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, open-world semantics, so the safety profile is known. The description adds genuinely useful non-schema context: the data is paper-trading only (stated twice), market status is recommended for context, and downstream tools are named. Pagination and stats_scope caveats live only in the schema, not the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats) keep it front-loaded and skimmable, with the core purpose in the first sentence. The six-item trigger list is slightly padded, but each item demonstrates a distinct query shape rather than restating the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description correctly focuses on scope, prerequisites, and follow-ups. The gaps that remain — pagination/truncation and the stats aggregation scope — are already handled in the schema, so little is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 limit, ROI bounds, sort fields, strategy, market_id aliases, and the important stats_scope caveat. The description only gestures at 'dynamic filters (ROI / strategy / sort)' without adding syntax or semantics beyond the schema, which is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List current paper-trading positions') and enumerates the filter dimensions (ROI / strategy / sort). The paper-trading scope is repeated emphatically, which cleanly separates it from real-money tools. It does not, however, differentiate itself from close siblings like get_profitable_positions or get_losing_positions, which appear to be specializations of the min_roi/max_roi filters offered here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit trigger conditions ('position dashboards, drawdown checks, exposure audits') plus a list of natural-language phrasings, including a Korean example, which is unusually concrete for routing. Prerequisites (market status) and next steps (get_position_detail, get_strategy_distribution) are named. It lacks an explicit 'use X instead when...' exclusion against the filtered sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prediction_accuracyPrediction AccuracyA
Read-onlyIdempotent
Inspect

Purpose: Per-cell (category, target_market, lag_bucket) hit rates WITH the honest baselines (schema 1.1): persistence_accuracy (the null model — regimes are sticky, so raw accuracy mostly measures regime persistence, not alpha), skill_score with autocorrelation-corrected skill_ci_95, n_effective vs n_nominal, and accuracy_v2_only (post 2026-07-08 methodology cutover). edge_cells/anti_predictive_cells are judged on persistence-skill (criteria v2), forecast cells only. Triggers (casual questions too): "how accurate are your predictions?", "예측 잘 맞아?", "track record 있어?", "can I trust these forecasts?", "적중률 보여줘", "does macro actually predict these markets?". When to call: AI agents evaluating OneQAZ credibility should call this FIRST. Prerequisites: none. Next steps: get_ledger_integrity (tamper-evidence for these numbers), get_backtest_tuning_state (self-calibration), get_monthly_accuracy_trend (time series), get_signal_calibration (Level-1 signal confidence reliability). Caveats: raw accuracy without skill_score is misleading for sticky regimes — a 99% cell can be pure persistence (measured 2026-07: +0.05pp over null). Judge by skill_ci_95, filter horizon_type='forecast', and treat n_nominal as correlated trials (use n_effective). Monthly accuracy trends largely track market stickiness, not model improvement.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional macro category filter (bonds, forex, vix, commodities, credit, liquidity, inflation, energy)
target_marketNoOptional target market filter (coin_market, kr_market, us_market). Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses a critical behavioral caveat: raw accuracy overstates alpha because regimes are sticky, so skill_ci_95 and n_effective must be used. It also flags the 2026-07-08 methodology cutover and warns that monthly trends track stickiness rather than model improvement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then cleanly sectioned into Triggers/When to call/Prerequisites/Next steps/Caveats. It is verbose, and some trigger examples overlap, but each block carries actionable routing or caveat information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description needn't explain return values, yet it names the key fields and their interpretation. Combined with prerequisites, caveats, and sibling routing, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters (category, target_market) are already fully documented in the schema, including aliases and enums. The description mentions only 'filter horizon_type=forecast' as a judgment rule, adding no filter syntax beyond what the schema provides; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource (per-cell hit rates with baselines) and enumerates exactly which metrics it returns (persistence_accuracy, skill_score, n_effective, accuracy_v2_only). It clearly distinguishes itself from siblings like get_monthly_accuracy_trend and get_signal_calibration via the 'Next steps' routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit 'When to call' directive ('should call this FIRST'), lists casual trigger questions in English and Korean, states 'Prerequisites: none', and names four specific alternative/next tools with their distinct roles. Nothing about tool selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_profitable_positionsProfitable PositionsA
Read-onlyIdempotent
Inspect

Purpose: Profitable paper positions (ROI > 0). Convenience wrapper around get_positions(min_roi=0.01). Triggers (casual questions too): "what's winning right now?", "지금 뭐가 수익 나고 있어?", "show me the green ones", "best open positions?", "어떤 종목이 잘 가고 있어?". When to call: quickly surface winning tickers. Prerequisites: none. Next steps: get_position_detail for full context. Caveats: paper-trading data only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds real context beyond that: the ROI > 0 threshold semantics, the wrapper relationship to get_positions, and the 'paper-trading data only' caveat. It stops short of describing return shape or pagination, which keeps it from 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is labeled and front-loaded (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats), which makes it scannable. However, the bilingual casual-trigger list is longer than needed; a couple of examples would carry the same meaning with less bulk.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering the safety/read profile, the description supplies everything else an agent needs: what counts as profitable, that it is paper-only, that it wraps get_positions, and where to go for detail. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (market_id enum, limit) are fully documented in the schema, so the baseline is 3. The description only gestures at parameterization through the min_roi=0.01 reference and adds no syntax beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Profitable paper positions') and pins the scope precisely with 'ROI > 0'. It also distinguishes itself from the sibling get_positions by defining itself as a 'Convenience wrapper around get_positions(min_roi=0.01)', so an agent can tell the two apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit 'When to call' guidance ('quickly surface winning tickers'), samples of casual triggers, a 'Prerequisites: none' note, and a 'Next steps' pointer to get_position_detail. The alternative (get_positions with min_roi) is named, so both the when and the routing are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_resolved_predictionsResolved PredictionsA
Read-onlyIdempotent
Inspect

Purpose: Raw, row-level prediction ledger — every macro regime prediction's full lifecycle (created_at -> resolved_at -> outcome). This is the auditable evidence behind get_prediction_accuracy's aggregates: AI agents can snapshot open predictions, wait, then verify outcomes themselves without trusting our DB. Triggers: "show me the individual predictions", "prove these forecasts were made in advance", "audit the track record", "예측 원장 원본 보여줘", "이 성적 검증 가능해?". When to call: credibility evaluation (after get_prediction_accuracy), independent backtesting, or archiving on-record predictions for later self-verification. Prerequisites: none. Pairs with get_ledger_integrity for tamper-evidence. Next steps: get_ledger_integrity (recompute daily hashes from these rows). Caveats: cursor pagination (id-ordered) — follow next_cursor for bulk reads. Paper-research forecasts, not investment advice. Output: full_data { predictions[] {id, source_category, source_regime_change, target_market, predicted_regime_shift, lag_hours, confidence, created_at, resolved_at, outcome, actual_regime_shift}, count, next_cursor, has_more, meta }.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNofilter by created day "YYYY-MM-DD" (UTC, string prefix of created_at)
limitNopage size (max 500)
cursorNolast id from previous page (0 = start)
statusNo"all" | "resolved" | "open"all
target_marketNofilter e.g. "coin_market" / "kr_market" / "us_market". Aliases coin/kr/us and any letter case are accepted.
source_categoryNofilter e.g. "vix", "bonds", "commodities"

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/idempotent, so the safety profile is covered. The description adds genuinely useful behavior the annotations don't: id-ordered cursor pagination requiring next_cursor to bulk-read, and a disclaimer that these are paper-research forecasts, not advice. It does not cover rate limits or error behavior, so it stops 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and labeled sections (Triggers, When to call, Caveats) make it scannable. However, the 'Output' block restates the return shape that the output schema already defines, which is redundant length; the definition is slightly over-long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For this tool the description supplies prerequisites, pagination caveats, sibling relationships, and follow-up steps; given an output schema exists, return values needn't be explained, though they are. Nothing an agent needs to invoke correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 six parameters including defaults and the enum. The description only indirectly touches parameters via the pagination caveat ('id-ordered, follow next_cursor'), adding little beyond structured data. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (row-level macro regime prediction ledger) and its full lifecycle, and explicitly differentiates it from the aggregate sibling get_prediction_accuracy. An agent can distinguish it from get_active_predictions and get_prediction_accuracy 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'When to call' list (credibility evaluation after get_prediction_accuracy, backtesting, archiving), states 'Prerequisites: none', and names next steps (get_ledger_integrity). It routes the agent to the correct alternative and the correct follow-up.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_role_analysisInterval Role AnalysisA
Read-onlyIdempotent
Inspect

Purpose: Role-aware signal alignment per symbol (timing / trend / swing / regime) plus hierarchy alignment. Triggers (casual questions too): "is BTC bullish across timeframes?", "단기랑 장기가 같은 방향이야?", "multi-timeframe view for AAPL?", "시간대별 신호가 일치해?", "short-term vs long-term signal?". When to call: multi-timeframe analysis, cross-role agreement checks. Prerequisites: get_signal_detail recommended. Next steps: market://{market_id}/unified/symbol/{symbol}, get_position_detail. Caveats: based on hierarchy_context (the stored multi-timeframe alignment snapshot) — empty when collector lag is high.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoLegacy alias of symbol (kept for backward compatibility)
symbolNoAsset identifier (preferred; e.g., BTC, AAPL)
market_idYesMarket ID (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/openWorldHint, so safety is covered. The description adds genuine behavioral context: results are based on hierarchy_context and can be empty under collector lag, and it points to a downstream resource and get_position_detail. This goes beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded 'Purpose' followed by clearly labeled Triggers/When to call/Prerequisites/Next steps/Caveats sections make it scannable. The long list of multilingual trigger examples is slightly verbose but earns its place by aiding intent matching.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and the description still covers purpose, invocation triggers, prerequisites, follow-ups, and the key failure mode (empty hierarchy_context). Nothing an agent needs 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so symbol/coin/market_id (including the coin legacy alias and market alias handling) are already documented in the schema. The description adds no parameter-level detail beyond that, which is the expected baseline when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific operation (role-aware signal alignment per symbol) across named roles (timing/trend/swing/regime) plus hierarchy alignment, which is more than a restatement of the title. It is distinguishable from siblings like get_signal_detail or get_signals by its multi-timeframe/cross-role framing, though it never explicitly names those siblings as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'When to call' conditions, concrete trigger phrasings (including casual and multilingual questions), a prerequisite (get_signal_detail), and named next steps. An agent has clear routing signals to select this over adjacent tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sector_correlations_toolSector CorrelationsA
Read-onlyIdempotent
Inspect

Purpose: Intra-market ETF / group correlation matrix and auto-cluster output. Quantifies structural co-movement (e.g. ARKK <-> QQQ) for diversification and sector-avoidance reasoning. Triggers (casual questions too): "which sectors move together?", "어떤 섹터끼리 같이 움직여?", "am I too concentrated?", "ETF 상관관계 보여줘", "is tech basically one trade right now?". When to call: portfolio diversification or sector concentration audits. Prerequisites: none. Next steps: get_symbol_peer_links_tool for per-symbol lead-lag inside a sector. Caveats: refreshed every 6 hours; 60-day lookback.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_kNoNumber of top pairs to return
market_idNocoin / kr_stock / us_stock. Aliases coin/kr/us and any letter case are accepted.us_stock

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered; the description adds genuinely useful non-structured context with data freshness ('refreshed every 6 hours') and scope ('60-day lookback'). These constrain how an agent should interpret the result, though response/pagination behavior is left to the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats). Slightly padded by the bilingual trigger examples, but that length serves trigger matching rather than being waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with a rich output schema, the definition covers purpose, usage triggers, prerequisites, freshness caveats, and a next-step handoff. Nothing an agent needs to select or invoke it correctly is missing, and return values are legitimately delegated to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (top_k, market_id with enum + aliases) are fully documented in the schema. The description adds no syntax, defaults, or semantic nuance beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: 'Intra-market ETF / group correlation matrix and auto-cluster output', explicitly quantifying structural co-movement with a concrete example (ARKK <-> QQQ). The 'intra-market' framing implicitly separates it from the sibling get_cross_market_correlation, so an agent can place it without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit 'When to call' (portfolio diversification or sector concentration audits), trigger phrasings, prerequisites ('none'), and a next step routing to get_symbol_peer_links_tool. It lacks an explicit negative case (e.g. 'for cross-market, use get_cross_market_correlation instead'), which keeps it just below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_signal_calibrationSignal CalibrationA
Read-onlyIdempotent
Inspect

Purpose: Reliability diagram data for Level-1 signal confidence — realized hit rate per confidence bucket ([0.5,0.6) ... [0.9,1.0]) with ECE summary. Lets an agent verify whether a 0.9-confidence signal actually hits ~90%. Triggers (casual questions too): "is your confidence calibrated?", "confidence 0.9 믿어도 돼?", "시그널 확신도 실제 적중률 보여줘", "how reliable are signal confidences?". When to call: before trusting get_signals confidence values as probabilities. Prerequisites: none. Next steps: get_prediction_accuracy (macro-layer skill), get_signals. Caveats: snapshot is daily (per-market day; markets[].stale flags a lagging market); read the observation window from markets[].observation_window_utc; every interval is judged 30 minutes after the signal (meta.judgment_horizon); n is nominal (correlated trials — see meta.sample_caveat); read intervals[*].quality.status before citing a cell (withheld / degenerate / non_monotone) and cite all_intervals_excluding_withheld, not all_intervals.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantNo"v1" (raw heuristic confidence, default) or "v2" (outcome-based shadow confidence — RCA C2, accumulating since 2026-07-21)v1
intervalNoOptional candle interval filter (e.g. 15m, 30m, 240m, 1d)
market_idNoOptional filter (crypto | kr_stock | us_stock)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnly/idempotent/openWorld; the description adds substantial behavior the agent could not otherwise know: daily per-market snapshot with stale flags, the observation-window field, a 30-minute judgment horizon, nominal n with correlated-trial caveat, and quality.status values (withheld/degenerate/non_monotone) that gate whether a cell may be cited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then uses labeled sections (Triggers, When to call, Prerequisites, Next steps, Caveats) so an agent can scan to the relevant part. The Caveats block is a dense run-on, but each clause carries operational weight rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is unnecessary; the description instead supplies the interpretive context the schema cannot (which field to cite, which quality statuses disqualify a cell). Nothing needed to call or correctly interpret the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the variant/interval/market_id semantics (including v1 vs v2 and accumulation date) are already documented in the schema. The description adds no parameter-level syntax or default guidance beyond what structured fields provide, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (reliability diagram data for Level-1 signal confidence), the exact output shape (realized hit rate per confidence bucket with ECE summary), and the agent-facing question it answers ('verify whether a 0.9-confidence signal actually hits ~90%'). This clearly separates it from siblings like get_signals (raw values) and get_structure_calibration (a different layer).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to call: before trusting get_signals confidence values as probabilities,' plus 'Prerequisites: none' and 'Next steps: get_prediction_accuracy, get_signals.' Casual-language triggers are also enumerated, removing inference from the routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_signal_detailSignal DetailA
Read-onlyIdempotent
Inspect

Purpose: Per-symbol signal deep-dive — latest signal + history + feedback. Triggers (casual questions too): "why is BTC a buy?", "그 시그널 근거가 뭐야?", "signal history for AAPL?", "이 종목 시그널 자세히 보여줘", "how has this signal performed before?". When to call: drilling into a single ticker's signal context. Prerequisites: confirm existence via get_signals first. Next steps: get_role_analysis, get_position_detail. Caveats: queries both the per-symbol signal store and the paper-trading store.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoLegacy alias of symbol (kept for backward compatibility)
symbolNoAsset identifier (preferred; e.g., BTC, AAPL)
intervalNoTimeframe (default: combined)combined
market_idYesMarket ID (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety profile is covered. The description adds genuinely new context by disclosing that the tool queries both the per-symbol signal store and the paper-trading store, though it says nothing about result size or latency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a one-line purpose, then labeled sections (Triggers, When to call, Prerequisites, Next steps, Caveats) that are easy to scan. The multilingual trigger examples are somewhat long but each maps to a real disambiguation case, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values; it instead covers intent, prerequisite sequencing, follow-up tools, and the dual data-store caveat. An agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with enums on interval and market_id, so the schema already documents symbol/coin/interval/market_id semantics including aliases. The description adds no parameter-level detail beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — a per-symbol 'signal deep-dive' returning latest signal, history, and feedback. It clearly distinguishes itself from the sibling get_signals, which is the list/scan tool, so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to call', prerequisites (confirm existence via get_signals first), and next steps (get_role_analysis, get_position_detail). Casual-question triggers in both English and Korean further pin down intent, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_signalsTrading SignalsA
Read-onlyIdempotent
Inspect

Purpose: Query research signals with dynamic filters (symbol / interval / action / score / confidence). Triggers (casual questions too): "should I buy / sell X?", "살까 말까?", "good entry?", "what's the signal for BTC / AAPL / 삼성전자?", "is X bullish or bearish?", "any buy signals right now?". Returns a research signal + score (NOT an order or advice — always surface the disclaimer). Pair with get_latest_decisions to show what the system did. When to call: drilling into a specific signal slice; symbol-by-symbol scanning; any "should I trade X?" question about a live symbol. Prerequisites: market://{market_id}/signals/summary recommended for global view. Next steps: get_signal_detail, get_role_analysis. Caveats: When symbol/coin is omitted, the whole market is scanned in one consolidated query (2 newest rows per symbol, newest-first scan cap per interval). Results are capped: check truncated / truncated_note before reading the set as "the whole market". Fields that are identical across every returned row are hoisted into common and omitted from the rows (see common_note); a row-level key, when present, wins over common. warnings carries only the flags that are true and is omitted entirely when none are. reason_uncalibrated: true on a row points at the response-level reason_uncalibrated_note.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoLegacy alias of symbol (kept for backward compatibility)
limitNoMax results (default 50, max 500; values outside the range are clamped)
symbolNoAsset identifier to query (preferred; optional — targets a specific symbol DB)
intervalNoTimeframe filter (15m, 30m, 240m, 1d, combined)
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)
min_scoreNoMinimum signal score threshold
hours_backNoOnly signals within last N hours (default 24)
action_filterNoAction filter (buy, sell, hold)
min_confidenceNoMinimum confidence threshold

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare read-only/open-world/idempotent, but the description adds substantial behavior an agent cannot get elsewhere: omitted-symbol semantics (whole-market scan, 2 newest rows per symbol), result capping with `truncated`/`truncated_note` to check, `common` hoisting with row-level precedence, `warnings` omission-when-empty, and `reason_uncalibrated` handling. It also warns the output is research, not advice/order, and to surface the disclaimer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with 'Purpose:' and clearly labeled Trigger/When/Prerequisites/Next steps/Caveats sections, so navigation is easy. The trigger list is dense and somewhat verbose, but the length is largely justified by 9 parameters, nested response behavior, and an output schema with non-obvious semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description need not document return fields, yet it still explains the response's non-obvious envelope (`common`, `warnings`, `truncated`, `reason_uncalibrated`). Combined with prerequisites, next steps, and the advice disclaimer, nothing an agent needs to call or interpret this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 goes beyond by explaining the behavioral consequence of omitting `symbol`/`coin` (legacy alias) and the scan/cap semantics, which the per-parameter schema strings do not convey. Minor gap: no added guidance on `limit` beyond clamping, already stated in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource+filter set ('Query research signals with dynamic filters (symbol / interval / action / score / confidence)') and explicitly differentiates roles by naming get_latest_decisions, get_signal_detail, and get_role_analysis as follow-ons. An agent can tell this apart from the many signal/decision siblings 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit triggers including natural-language examples, a dedicated 'When to call' section ('drilling into a specific signal slice; symbol-by-symbol scanning'), a prerequisite for the global view, and next-step tools. When-to-use and how-it-relates-to-alternatives are both covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_strategy_distributionStrategy DistributionA
Read-onlyIdempotent
Inspect

Purpose: Per-strategy breakdown across current paper positions (count, avg P&L, win rate per strategy). Triggers (casual questions too): "what strategies are you running?", "무슨 전략 돌리고 있어?", "which strategy holds the most positions?", "전략별 성적 어때?", "is one strategy dominating?". When to call: diversification audit, per-strategy performance check. Prerequisites: get_positions recommended for raw rows. Next steps: market://{market_id}/derived/strategy-fitness, signals/feedback. Caveats: empty distribution when no positions are open.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safe/lookup profile is covered. The description adds a genuine behavioral caveat beyond the annotations: an empty distribution when no positions are open, plus dependency guidance. It stops short of describing pagination or aggregation window, hence a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Clearly labeled sections with Purpose front-loaded, so an agent can scan it quickly. The five-example trigger list (bilingual) is somewhat verbose, but each example plausibly improves trigger matching, so the length is largely earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, no return-value explanation is needed, and the annotations cover safety. The description supplies the remaining gaps for a read-only aggregation tool: prerequisites, follow-up resources, and the empty-result edge case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single enumerated market_id parameter, so the schema already carries the semantics (including alias handling). The description adds nothing further about the parameter, which is the expected baseline-3 outcome when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('per-strategy breakdown') with explicit scope ('across current paper positions') and names the three returned metrics (count, avg P&L, win rate). The 'current positions' qualifier cleanly separates it from structured siblings like get_strategy_leaderboard and get_performance_metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit triggers (including casual question phrasing), a 'when to call' clause (diversification audit, per-strategy performance check), a prerequisite (get_positions for raw rows), and next steps (strategy-fitness resource, signals/feedback). Routing logic is fully spelled out rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_strategy_leaderboardStrategy LeaderboardA
Read-onlyIdempotent
Inspect

Purpose: Top RL-learned research strategies — GLOBAL pool + per-symbol partition. Layer E evidence (Layer E = strategy-performance tier of the 5-layer trust pyramid). The GLOBAL pool may include synthesized win_rate values, so per_symbol_leaderboard is the primary measured-edge surface for trust auditing. Triggers (casual questions too): "what are the best strategies?", "제일 잘 버는 전략 뭐야?", "top strategies?", "전략 순위 보여줘", "which strategy has the best win rate?". When to call: final trust-validation step. Prerequisites: none. Next steps: market://{market_id}/signals/summary for live signals. Caveats: min_trades filter enforces statistical validity. Strategies are paper-tested, not real-money executed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoAlias for top_n (client-compat)
top_nNoTop N strategies to return (default 20)
market_idNoMarket identifier (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted.crypto
min_tradesNoMinimum trades count for inclusion (default 10)
target_marketNoAlias for market_id (backward compat)
include_per_symbolNoInclude per-symbol PG partition results (default True)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/openWorld/idempotent annotations by disclosing data-quality caveats: the GLOBAL pool may contain synthesized win_rate values, per_symbol_leaderboard is the primary measured-edge surface, min_trades enforces statistical validity, and results are paper-tested rather than real-money executed. This is exactly the kind of trust-relevant context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded Purpose sentence, then labeled sections (Triggers, When to call, Prerequisites, Next steps, Caveats), which makes it scannable. The multi-lingual trigger list is somewhat verbose, but every line carries usable routing or caveat information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only ranked-list tool with an output schema, the description supplies purpose, scope split, usage triggers, prerequisites, next-step routing, and trust caveats. Nothing an agent needs to call it correctly is missing, and return-value detail is appropriately delegated to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, but the description adds semantic weight by framing min_trades as a statistical-validity guard and include_per_symbol as selecting the primary measured-edge surface. It does not explain the alias pairs (limit/top_n, market_id/target_market) beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Top RL-learned research strategies') and precisely delineates scope (GLOBAL pool vs per-symbol partition, Layer E evidence tier). An agent can tell what surface it returns. It does not, however, name or contrast itself with the closest sibling get_strategy_distribution, so sibling differentiation is implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives 'When to call' (final trust-validation step), 'Prerequisites' (none), and 'Next steps' routing to market://{market_id}/signals/summary. It even supplies natural-language triggers including Korean, which directly helps intent matching against siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_structure_calibrationStructure Calibration (Level 2)A
Read-onlyIdempotent
Inspect

Purpose: Level 2 (ETF / basket / sector granularity — Level 1 is individual symbols) prediction calibration. Returns hit_rate_ema per (market, group, interval, regime_bucket) with sample counts, plus the majority-class baseline needed to interpret them. This is measurement, NOT a claim of edge — as of 2026-09-18 the measured skill (accuracy minus baseline) is negative in all three markets. Triggers (casual questions too): "how good are your sector calls?", "섹터 예측 잘 맞아?", "sector rotation accuracy?", "그룹 단위 적중률 보여줘", "can you time sector moves?". When to call: when an AI wants to see Layer D evidence (Layer D = sector-structure tier of the 5-layer trust pyramid). Prerequisites: none. Next steps: get_structure_validation_history for the daily trend. Caveats: empty until structure-learning cycles complete. Rows are paginated — read total_available (not len(calibration)) for the whole-set size. baseline, meta.total_entries and meta.total_samples are always whole-set. Rows keep their dimension keys (market_id / interval / regime_bucket); they are never hoisted out of the row.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50, max 500). Rows are truncated; see `total_available` and `truncated` in the response. `baseline` and `meta` counts stay whole-set.
market_idNoOptional market filter (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted.
group_nameNoOptional group/sector filter (e.g., layer1, defi, sector, broad_index)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint), and the description usefully adds non-obvious behavior: results are empty until structure-learning cycles complete, rows are paginated so callers must read total_available rather than len(), and baseline/meta counts remain whole-set. It also discloses an interpretive caveat (measured skill is negative as of a stated date), which goes beyond annotations. It stops short of exactly how hit_rate_ema is computed, but the coverage is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with "Purpose", then cleanly sectioned into Triggers / When to call / Prerequisites / Next steps / Caveats, so an agent can scan to the needed part. It is on the long side and some inline bolding/scaffolding is decorative rather than informative, but almost every sentence carries real guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return structure need not be described, yet the description still supplies the interpretive frame an agent needs (baseline required to read hit rates, negative skill disclaimer, whole-set vs truncated fields). Given three optional params and a read-only tool, nothing required for a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, but the description earns extra by clarifying the truncation semantics that govern `limit` — rows get truncated while `baseline`, `meta.total_entries` and `meta.total_samples` stay whole-set, and dimension keys are never hoisted out of rows. That is meaning beyond the per-field schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource (prediction calibration) and pins down its granularity tier (Level 2 = ETF/basket/sector, versus Level 1 individual symbols), then names the exact metric returned (hit_rate_ema per market/group/interval/regime_bucket with sample counts and baseline). This is enough to separate it from siblings like get_signal_calibration or get_structure_validation_history without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to call ("when an AI wants to see Layer D evidence"), supplies real example trigger phrasings in two languages, states prerequisites (none), and routes the agent forward to a specific sibling tool (get_structure_validation_history) for the daily trend. This is a complete when/how/when-not routing section.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_structure_validation_historyStructure Validation HistoryA
Read-onlyIdempotent
Inspect

Purpose: Daily validation history of Level 2 structure predictions (Level 2 = ETF / basket / sector granularity). Each row shows the hit_rate for a specific day, enabling time-series verification of sustained performance. Triggers (casual questions too): "sector accuracy over time?", "구조 예측 매일 검증해?", "daily hit-rate trend?", "요즘 섹터 예측 성적 어때?", "is the sector edge holding up?". When to call: after get_structure_calibration. Prerequisites: none. Next steps: get_monthly_accuracy_trend for the macro-level comparison. Caveats: returns an overall_hit_rate summary across the window.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days (default 90)
market_idNoOptional market filter. Aliases coin/kr/us and any letter case are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety and repeatability profile is covered. The description adds a scoping caveat (the window includes an overall_hit_rate summary) and the daily-row shape, but discloses nothing about auth needs, latency, or data-freshness behavior beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled sections (Purpose / Triggers / When to call / Prerequisites / Next steps / Caveats) are front-loaded and scannable. The trigger list is long, but it earns its place by enabling intent matching against casual queries; only slight verbosity keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and it still covers prerequisites, next steps, caveats, and routing context. For a read-only history tool, an agent has everything needed to select and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters (days, market_id) carry their own descriptions including the alias handling. The description implies a lookback window ('over the window') but adds no syntax or constraint detail beyond the schema, so the baseline 3 holds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Daily validation history of Level 2 structure predictions') and even disambiguates the domain term ('Level 2 = ETF / basket / sector granularity'). It tells the agent what each row contains (hit_rate per day), making it clearly distinguishable from siblings like get_performance_metrics or get_prediction_accuracy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'When to call: after get_structure_calibration' and 'Next steps: get_monthly_accuracy_trend for the macro-level comparison', routing the agent to alternatives by condition. The Triggers block with casual and multilingual questions further pins down when it applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_symbol_contextSymbol ContextA
Read-onlyIdempotent
Inspect

Use when the question is about one stock or coin — its current signal state, the OneQAZ structure group it belongs to, and which assets have tracked lead-lag links to it. Returns self-contained headline claims first, then the symbol's observed state, upstream links (its group, macro/ETF/basket instruments and symbols that move before it), peers (symbols that follow it), tagged news, and gaps that say what is not tracked. Not for sector-wide questions (use get_group_context) or whole-market questions (use get_market_context). Provides regime, signal-score and linkage context with sample sizes and measured hit rates; every link carries its evidence and every empty section is listed in gaps. Not a real-time quote, fundamentals, or full-text news source. Accepts tickers, KRX codes or names; ambiguous inputs return candidates instead of a guess.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax links per section (default 8, max 50).
symbolYesTicker (NVDA), KRX 6-digit code (005930), coin base ticker (BTC) or name (삼성전자, Samsung Electronics). Ambiguous names return candidates, not a guess.
questionNoOptional. The user's original question, used only for service improvement analytics. Does not change the response.
market_idNoOptional. crypto / kr_stock / us_stock (aliases coin/kr/us). Narrows name resolution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
gapsNo
metaNo
newsNo
selfNo
peersNo
entityNo
headlineNo
upstreamNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
downstreamNo
request_idYes32-hex per-response correlation id
resolutionNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/openWorld/idempotent annotations, it discloses the response ordering (headline claims first), the section inventory including 'gaps' for untracked items, and that links carry sample sizes, measured hit rates and evidence. It also states negative capability boundaries — not a real-time quote, fundamentals, or full-text news source — which is behavioral context 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the usage trigger, then the return shape, then the exclusions, which is the correct order. The single dense paragraph packs a lot, and a couple of clauses (the repeated ambiguous-input note) could be trimmed, but almost every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though an output schema exists and return values need not be described, the description still gives an accurate section-by-section map of the response plus explicit scope limits. For a read-only, single-symbol context tool this leaves nothing an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 limit, symbol formats, question and market_id. The description restates the ticker/KRX/coin-name acceptance and the ambiguous-input behavior, which the schema also states, adding reinforcement but no new semantics. Baseline 3 applies 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource and enumerates exactly what is returned: current signal state, OneQAZ structure group, and lead-lag linked assets. It explicitly distinguishes itself from get_group_context and get_market_context, so an agent can separate it from siblings without reading schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a precise trigger ('when the question is about one stock or coin') plus explicit exclusions with named alternatives for sector-wide and whole-market questions. It also documents the fallback behavior for ambiguous input (candidates instead of a guess).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trade_historyTrade HistoryA
Read-onlyIdempotent
Inspect

Purpose: Query paper-trading history with dynamic filters (action / P&L / time / symbol). Triggers (casual questions too): "what trades happened lately?", "최근 거래 내역 보여줘", "how did the BTC trades go?", "승률 어때?", "show me the trade log", "how many trades won this week?". When to call: past trade review, single-symbol post-mortem, win-rate audits. Prerequisites: none. Next steps: analyze_trades, market://{market_id}/signals/feedback. Caveats: paper-trading data only (not real money). limit capped at 1000.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows returned (default 50, max 1000). Rows are paginated; see total_available / truncated. NOTE: stats (win_rate, avg_pnl) are aggregated over the scanned set, not over the returned rows — see stats_scope.
symbolNoFilter by ticker symbol (e.g., "BTC", "AAPL"); case-insensitive
max_pnlNoMax P&L % filter (e.g., 10.0)
min_pnlNoMin P&L % filter (e.g., -5.0)
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)
hours_backNoOnly trades within last N hours
action_filterNoFilter by action (all, buy, sell)all

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context: the data is paper-trading only (not real money) and the limit is capped at 1000. It does not restate annotation content, but it also omits how truncation/pagination behaves, which the schema carries instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Uses labeled sections (Purpose / Triggers / When to call / Prerequisites / Next steps / Caveats) with the core purpose front-loaded, and each section is brief. The multi-lingual trigger examples are somewhat expansive but serve retrieval matching rather than being pure padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only query tool with a full output schema and 100% parameter coverage, the description supplies purpose, triggers, prerequisites, next-step routing, and a caveat about data provenance and row limits. Return values are legitimately left to the output schema, so nothing an agent needs 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the 7 parameters is already documented in-schema, including the stats_scope nuance on limit. The description only loosely maps its filter list ('action / P&L / time / symbol') to those parameters and adds no format or semantic detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Query paper-trading history') and enumerates the filter dimensions (action / P&L / time / symbol), plus scope ('paper-trading data only'). It does not explicitly distinguish itself from closely-named siblings like get_winning_trades or get_losing_trades, so an agent must infer that those are subsets of this broader query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete when-to-use contexts ('past trade review, single-symbol post-mortem, win-rate audits') and even casual-question triggers in two languages, plus 'Prerequisites: none' and follow-up tools under 'Next steps'. It stops short of naming an alternative tool for when NOT to use this one, so no exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trade_outcomes_bulkTrade Outcomes (Bulk Export)A
Read-onlyIdempotent
Inspect

Purpose: Cursor-paginated bulk export of the prediction -> trade -> outcome chain — paper trades with realized P&L, each linked (best-effort, same-symbol 2h window) to the signal prediction that preceded entry. Built for pipeline consumers who need offline backtesting data, not conversational snippets. Triggers: "give me your full trade history for backtesting", "bulk export trades", "예측이 실제 매매 성과로 이어졌는지 원데이터로 검증하고 싶다", "download outcomes". When to call: offline verification, periodic ingestion into a research pipeline, or auditing whether signals translate into realized outcomes. Prerequisites: none. For the prediction ledger itself use get_resolved_predictions. Next steps: follow next_cursor until has_more=false; get_resolved_predictions to cross-check linked predictions against the tamper-evident ledger. Caveats: linkage is temporal matching, NOT a foreign key (see meta.linkage). Paper trading only — envelope carries the standard disclaimer once per page. Output: full_data { market, trades[] {id, symbol, action, entry/exit price+ts, profit_loss_pct, holding_duration, entry_signal_score, regime fields, policy_version, sizing fields, linked_prediction{...}|null}, count, linked_prediction_count, next_cursor, has_more, meta }.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoexit-time window in days (max 120)
limitNoPage size (default 50, max 500). Cursor-paginated: follow next_cursor while has_more is true to retrieve everything.
cursorNolast trade id from previous page (0 = start)
marketNo"crypto" (default) / "kr_stock" / "us_stock"crypto

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/openWorld, but the description goes well beyond them: it discloses that linkage is temporal matching rather than a foreign key, that data is paper-trading only, and that a disclaimer appears once per page. These are exactly the caveats an agent needs before treating the output as authoritative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with labeled Purpose/Triggers/When to call/Prerequisites/Next steps/Caveats/Output sections and the core purpose front-loaded. It is on the long side and the bilingual trigger examples are somewhat verbose, but every section carries distinct information rather than repeating the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated bulk-export tool with an output schema, the description covers data source, linkage caveats, pagination workflow, cross-check path, and output shape. An agent has everything needed to call it correctly and interpret the result; nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents days/limit/cursor/market with defaults and maxes; the baseline is 3. The description adds operational meaning by spelling out the cursor-follow workflow ('follow next_cursor until has_more=false'), but it does not explain parameter semantics (e.g., why cursor is an integer trade id) beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource+scope: 'Cursor-paginated bulk export of the prediction -> trade -> outcome chain — paper trades with realized P&L.' It also names the linkage semantics (best-effort, same-symbol 2h window) and explicitly contrasts with the sibling get_resolved_predictions, so an agent can distinguish it from get_trade_history and the prediction tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit Triggers section with example utterances, an explicit 'When to call' clause (offline verification, periodic ingestion, auditing), a named alternative for the prediction ledger, and a 'Next steps' section describing the pagination loop. Nothing about when to select this tool is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_winning_tradesWinning TradesA
Read-onlyIdempotent
Inspect

Purpose: Winning paper trades only (P&L > 0). Convenience wrapper around get_trade_history(min_pnl=0.01). Triggers (casual questions too): "what worked?", "뭐가 제일 잘 벌었어?", "show me the winners", "best trades lately?", "수익 난 거래 보여줘". When to call: success-pattern review. Prerequisites: none. Next steps: analyze_trades for breakdowns. Caveats: paper-trading data only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10)
market_idYesMarket ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_dataNo
timestampYesRFC3339 UTC, server build time
disclaimerYesCanonical compliance disclaimer (always present)
request_idYes32-hex per-response correlation id
is_real_moneyNo
data_classificationNo
is_investment_adviceNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and open-world behavior. The description adds useful context: paper-trading data only, winning-only filtering, and wrapper semantics. It does not detail auth or rate limits, but 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the description is organized with clear labels. Trigger examples add intent-matching value, though the list format is slightly verbose relative to the very simple two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only filtered list tool, the description supplies purpose, triggers, prerequisites, next steps, and a caveat, while the schema and output schema cover inputs and outputs. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both market_id and limit are fully documented in the schema. The description does not add syntax or meaning to those parameters beyond the winning filter threshold, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: winning paper trades with P&L > 0. It also identifies itself as a convenience wrapper around get_trade_history(min_pnl=0.01) and points to analyze_trades for breakdowns, distinguishing it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggers, a when-to-call context ('success-pattern review'), prerequisites, and next steps. It names get_trade_history as the underlying alternative, but lacks an explicit when-not statement, though the winning-only scope implies it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedget_group_context1 field changed
      • addedInput schema / properties / question
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional. The user's original question, used only for service improvement analytics. Does not change the response."
        +}
    • Changedget_market_context1 field changed
      • addedInput schema / properties / question
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional. The user's original question, used only for service improvement analytics. Does not change the response."
        +}
    • Changedget_symbol_context1 field changed
      • addedInput schema / properties / question
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional. The user's original question, used only for service improvement analytics. Does not change the response."
        +}
  2. 3 tool updates
    • Addedget_group_context
    • Addedget_market_context
    • Addedget_symbol_context
  3. 1 tool update
    • Changedget_daily_brief1 field changed
      • changedOutput schema / properties / full_data / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "description": "`full_data` for get_daily_brief.",
        -    "properties": {
        -      "active_predictions_count": {
        -        "default": 0,
        -        "type": "integer"
        -      },
        -      "losing_count": {
        -        "default": 0,
        -        "type": "integer"
        -      },
        -      "macro_regime": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "as_of": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "categories": {
        -            "items": {},
        -            "type": "array"
        -          },
        -          "regime": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "regime_score": {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "regime_signed": {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "stale": {
        -            "anyOf": [
        -              {
        -                "type": "boolean"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "total": {
        -            "default": 0,
        -            "type": "integer"
        -          },
        -          "unavailable_reason": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "market": {
        -        "type": "string"
        -      },
        -      "meta": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "data_window": {
        -            "default": "last_24h",
        -            "type": "string"
        -          },
        -          "interpretation": {
        -            "default": "",
        -            "type": "string"
        -          },
        -          "source": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "narrative": {
        -        "type": "string"
        -      },
        -      "primary_market": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "strong_signals": {
        -        "items": {
        -          "additionalProperties": true,
        -          "properties": {
        -            "action": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "confidence": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "interval": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "market_id": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "price": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "reason_uncalibrated": {
        -              "anyOf": [
        -                {
        -                  "type": "boolean"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "signal_score": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "symbol": {
        -              "type": "string"
        -            },
        -            "timestamp": {
        -              "anyOf": [
        -                {
        -                  "type": "integer"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "warnings": {
        -              "anyOf": [
        -                {
        -                  "additionalProperties": {
        -                    "type": "boolean"
        -                  },
        -                  "type": "object"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            }
        -          },
        -          "required": [
        -            "symbol"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "winning_count": {
        -        "default": 0,
        -        "type": "integer"
        -      },
        -      "yesterday_trades": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "by_market": {
        -            "additionalProperties": {
        -              "additionalProperties": true,
        -              "type": "object"
        -            },
        -            "type": "object"
        -          },
        -          "losing": {
        -            "default": 0,
        -            "type": "integer"
        -          },
        -          "total": {
        -            "default": 0,
        -            "type": "integer"
        -          },
        -          "winning": {
        -            "default": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "market",
        -      "narrative"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "`full_data` for get_daily_brief.",
        +    "properties": {
        +      "active_predictions_count": {
        +        "default": 0,
        +        "type": "integer"
        +      },
        +      "losing_count": {
        +        "default": 0,
        +        "type": "integer"
        +      },
        +      "macro_regime": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "as_of": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "categories": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "regime": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "regime_score": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "regime_signed": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "stale": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "total": {
        +            "default": 0,
        +            "type": "integer"
        +          },
        +          "unavailable_reason": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "market": {
        +        "type": "string"
        +      },
        +      "market_breadth": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "meta": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "data_window": {
        +            "default": "last_24h",
        +            "type": "string"
        +          },
        +          "interpretation": {
        +            "default": "",
        +            "type": "string"
        +          },
        +          "source": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "narrative": {
        +        "type": "string"
        +      },
        +      "primary_market": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "strong_signals": {
        +        "items": {
        +          "additionalProperties": true,
        +          "properties": {
        +            "action": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "confidence": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "interval": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "market_id": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "price": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "reason_uncalibrated": {
        +              "anyOf": [
        +                {
        +                  "type": "boolean"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "signal_score": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "symbol": {
        +              "type": "string"
        +            },
        +            "timestamp": {
        +              "anyOf": [
        +                {
        +                  "type": "integer"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "warnings": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {
        +                    "type": "boolean"
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            }
        +          },
        +          "required": [
        +            "symbol"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "winning_count": {
        +        "default": 0,
        +        "type": "integer"
        +      },
        +      "yesterday_trades": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "by_market": {
        +            "additionalProperties": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "type": "object"
        +          },
        +          "losing": {
        +            "default": 0,
        +            "type": "integer"
        +          },
        +          "total": {
        +            "default": 0,
        +            "type": "integer"
        +          },
        +          "winning": {
        +            "default": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "market",
        +      "narrative"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  4. 1 tool update
    • Changedget_daily_brief1 field changed
      • changedOutput schema / properties / full_data / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "description": "`full_data` for get_daily_brief.",
        -    "properties": {
        -      "active_predictions_count": {
        -        "default": 0,
        -        "type": "integer"
        -      },
        -      "losing_count": {
        -        "default": 0,
        -        "type": "integer"
        -      },
        -      "macro_regime": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "categories": {
        -            "items": {},
        -            "type": "array"
        -          },
        -          "total": {
        -            "default": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "market": {
        -        "type": "string"
        -      },
        -      "meta": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "data_window": {
        -            "default": "last_24h",
        -            "type": "string"
        -          },
        -          "interpretation": {
        -            "default": "",
        -            "type": "string"
        -          },
        -          "source": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "narrative": {
        -        "type": "string"
        -      },
        -      "primary_market": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "strong_signals": {
        -        "items": {
        -          "additionalProperties": true,
        -          "properties": {
        -            "action": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "confidence": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "interval": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "market_id": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "price": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "reason_uncalibrated": {
        -              "anyOf": [
        -                {
        -                  "type": "boolean"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "signal_score": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "symbol": {
        -              "type": "string"
        -            },
        -            "timestamp": {
        -              "anyOf": [
        -                {
        -                  "type": "integer"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "warnings": {
        -              "anyOf": [
        -                {
        -                  "additionalProperties": {
        -                    "type": "boolean"
        -                  },
        -                  "type": "object"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            }
        -          },
        -          "required": [
        -            "symbol"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "winning_count": {
        -        "default": 0,
        -        "type": "integer"
        -      },
        -      "yesterday_trades": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "by_market": {
        -            "additionalProperties": {
        -              "additionalProperties": true,
        -              "type": "object"
        -            },
        -            "type": "object"
        -          },
        -          "losing": {
        -            "default": 0,
        -            "type": "integer"
        -          },
        -          "total": {
        -            "default": 0,
        -            "type": "integer"
        -          },
        -          "winning": {
        -            "default": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "market",
        -      "narrative"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "`full_data` for get_daily_brief.",
        +    "properties": {
        +      "active_predictions_count": {
        +        "default": 0,
        +        "type": "integer"
        +      },
        +      "losing_count": {
        +        "default": 0,
        +        "type": "integer"
        +      },
        +      "macro_regime": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "as_of": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "categories": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "regime": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "regime_score": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "regime_signed": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "stale": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "total": {
        +            "default": 0,
        +            "type": "integer"
        +          },
        +          "unavailable_reason": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "market": {
        +        "type": "string"
        +      },
        +      "meta": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "data_window": {
        +            "default": "last_24h",
        +            "type": "string"
        +          },
        +          "interpretation": {
        +            "default": "",
        +            "type": "string"
        +          },
        +          "source": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "narrative": {
        +        "type": "string"
        +      },
        +      "primary_market": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "strong_signals": {
        +        "items": {
        +          "additionalProperties": true,
        +          "properties": {
        +            "action": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "confidence": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "interval": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "market_id": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "price": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "reason_uncalibrated": {
        +              "anyOf": [
        +                {
        +                  "type": "boolean"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "signal_score": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "symbol": {
        +              "type": "string"
        +            },
        +            "timestamp": {
        +              "anyOf": [
        +                {
        +                  "type": "integer"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "warnings": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {
        +                    "type": "boolean"
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            }
        +          },
        +          "required": [
        +            "symbol"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "winning_count": {
        +        "default": 0,
        +        "type": "integer"
        +      },
        +      "yesterday_trades": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "by_market": {
        +            "additionalProperties": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "type": "object"
        +          },
        +          "losing": {
        +            "default": 0,
        +            "type": "integer"
        +          },
        +          "total": {
        +            "default": 0,
        +            "type": "integer"
        +          },
        +          "winning": {
        +            "default": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "market",
        +      "narrative"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  5. 1 tool update
    • Addedget_account_status
  6. 39 tool updates
    • Changedanalyze_trades1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedexplain_decision1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfetch1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_active_predictions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_backtest_tuning_state1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_cross_market_correlation1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_daily_brief1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_feature_governance_state1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_feature_governance_status_tool1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_latest_decisions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_ledger_integrity1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_llm_trading_decisions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_losing_positions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_losing_trades1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_macro_causality_graph_tool1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_macro_influence_map1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_monthly_accuracy_trend1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_news_causality_breakdown1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_news_leading_indicator_performance1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_performance_metrics1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_position_detail1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_positions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_prediction_accuracy1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_profitable_positions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_resolved_predictions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_role_analysis1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_sector_correlations_tool1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_signal_calibration1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_signal_detail1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_signals1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_strategy_distribution1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_strategy_leaderboard1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_structure_calibration1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_structure_validation_history1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_symbol_peer_links_tool1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_trade_history1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_trade_outcomes_bulk1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_winning_trades1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  7. 2 tool updates
    • Changedexplain_decision1 field changed
      • changedOutput schema / properties / full_data / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "description": "`full_data` for explain_decision.",
        -    "properties": {
        -      "layers": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "overall_recommendation": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "text": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          },
        -          "verdict": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "symbol": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "symbol"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "`full_data` for explain_decision.",
        +    "properties": {
        +      "layers": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "overall_recommendation": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "basis": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "text": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "verdict": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "symbol": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "symbol"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_signals1 field changed
      • changedOutput schema / properties / full_data / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "description": "`full_data` for get_signals.",
        -    "properties": {
        -      "common": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "filters": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "limit": {
        -        "anyOf": [
        -          {
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "market_id": {
        -        "type": "string"
        -      },
        -      "returned": {
        -        "anyOf": [
        -          {
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "signals": {
        -        "items": {
        -          "additionalProperties": true,
        -          "properties": {
        -            "action": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "confidence": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "interval": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "market_id": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "price": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "reason_uncalibrated": {
        -              "anyOf": [
        -                {
        -                  "type": "boolean"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "signal_score": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "symbol": {
        -              "type": "string"
        -            },
        -            "timestamp": {
        -              "anyOf": [
        -                {
        -                  "type": "integer"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "warnings": {
        -              "anyOf": [
        -                {
        -                  "additionalProperties": {
        -                    "type": "boolean"
        -                  },
        -                  "type": "object"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            }
        -          },
        -          "required": [
        -            "symbol"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "truncated": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "required": [
        -      "market_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "`full_data` for get_signals.",
        +    "properties": {
        +      "common": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "filters": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "latest_by_interval": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "limit": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "market_id": {
        +        "type": "string"
        +      },
        +      "returned": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "signals": {
        +        "items": {
        +          "additionalProperties": true,
        +          "properties": {
        +            "action": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "confidence": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "interval": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "market_id": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "price": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "reason_uncalibrated": {
        +              "anyOf": [
        +                {
        +                  "type": "boolean"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "signal_score": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "symbol": {
        +              "type": "string"
        +            },
        +            "timestamp": {
        +              "anyOf": [
        +                {
        +                  "type": "integer"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "warnings": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {
        +                    "type": "boolean"
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            }
        +          },
        +          "required": [
        +            "symbol"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "truncated": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "market_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  8. 1 tool update
    • Changedget_llm_trading_decisions1 field changed
      • changedInput schema / properties / market_id / description
        Previous value: -"Market ID (crypto, kr_stock, us_stock, commodity, forex, bond). Aliases coin/kr/us and any letter case are accepted."New value: +"Market ID (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted."
  9. 39 tool updates
    • Changedanalyze_trades17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedexplain_decision17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedfetch2 fields changed
      • addedOutput schema / description
        Added value: +"`full_data` for fetch — 실응답에서 추출(2026-09-23)."
      • addedOutput schema / properties
        Added value: +{
        +  "id": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "metadata": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "text": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "title": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "url": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  }
        +}
    • Changedget_active_predictions17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_backtest_tuning_state17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_cross_market_correlation2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_cross_market_correlation — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "correlations": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "decoupling": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_daily_brief17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_feature_governance_state2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_feature_governance_state — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "common": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "common_note": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "features": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "returned": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "status_summary": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "total_available": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "truncated": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "truncated_note": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_feature_governance_status_tool2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_feature_governance_status_tool — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "by_status": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "recent_transitions": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "total": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_latest_decisions17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_ledger_integrity2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_ledger_integrity — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "chain_length": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "entries": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "external_anchors": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "first_day": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "last_day": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "recipe": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "recipe_version": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "verification_hint": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_llm_trading_decisions17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_losing_positions2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_losing_positions — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "common": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "common_note": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "filters": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "market_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "positions": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "returned": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "stats": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "stats_scope": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "total_available": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "truncated": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "truncated_note": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_losing_trades17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_macro_causality_graph_tool2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_macro_causality_graph_tool — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "edges": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "significant_count": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "total_edges": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_macro_influence_map2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_macro_influence_map — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "influence_map": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_monthly_accuracy_trend17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_news_causality_breakdown2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_news_causality_breakdown — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "breakdown": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_news_leading_indicator_performance2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_news_leading_indicator_performance — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "indicators": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_performance_metrics2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_performance_metrics — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "account_type": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "capital_model": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "market": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "metrics": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "monthly_returns": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "totals": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "window": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_position_detail2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_position_detail — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "coin": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "market_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "position": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "recent_decisions": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "recent_trades": {
        +            "items": {},
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_positions17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_prediction_accuracy17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_profitable_positions2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_profitable_positions — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "common": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "common_note": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "filters": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "market_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "positions": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "returned": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "stats": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "stats_scope": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "total_available": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "truncated": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "truncated_note": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_resolved_predictions2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_resolved_predictions — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "count": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "filters": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "has_more": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "next_cursor": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "predictions": {
        +            "items": {},
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_role_analysis2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_role_analysis — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "combined": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "hierarchy": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "market_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "roles": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "symbol": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "timestamp": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_sector_correlations_tool2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_sector_correlations_tool — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "clusters": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "market_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "top_pairs": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "total_pairs": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_signal_calibration2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_signal_calibration — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "markets": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "snapshot_day": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "variant": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_signal_detail2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_signal_detail — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "interval": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "latest_signal": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "market_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "pattern_feedback": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "recent_history": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "symbol": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "timestamp": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_signals17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_strategy_distribution2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_strategy_distribution — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "distribution": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "market_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_strategy_leaderboard17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_structure_calibration2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_structure_calibration — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "baseline": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "calibration": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "limit": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "returned": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "total_available": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "truncated": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "truncated_note": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_structure_validation_history2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_structure_validation_history — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "history": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "summary": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_symbol_peer_links_tool2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_symbol_peer_links_tool — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "as_follow": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "as_lead": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "focus_symbol": {
        +            "anyOf": [
        +              {},
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "market_id": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "total_links": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_trade_history17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedget_trade_outcomes_bulk2 fields changed
      • addedOutput schema / properties
        Added value: +{
        +  "data_classification": {
        +    "anyOf": [
        +      {
        +        "const": "research_information_only",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "disclaimer": {
        +    "description": "Canonical compliance disclaimer (always present)",
        +    "type": "string"
        +  },
        +  "full_data": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": true,
        +        "description": "`full_data` for get_trade_outcomes_bulk — 실응답에서 추출(2026-09-23).",
        +        "properties": {
        +          "count": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "has_more": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "linked_prediction_count": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "market": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "next_cursor": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          },
        +          "trades": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "window_days": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null
        +          }
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_investment_advice": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "is_real_money": {
        +    "anyOf": [
        +      {
        +        "const": false,
        +        "type": "boolean"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "request_id": {
        +    "description": "32-hex per-response correlation id",
        +    "type": "string"
        +  },
        +  "timestamp": {
        +    "description": "RFC3339 UTC, server build time",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "disclaimer",
        +  "request_id",
        +  "timestamp"
        +]
    • Changedget_winning_trades17 fields changed
      • removedOutput schema / properties / _followup_questions_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _llm_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _market_state_narrative
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Wrapper for `_market_state_narrative` — bilingual + provenance.",
        -      "properties": {
        -        "_source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "en": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "ko": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": true,
        -              "description": "Bilingual narrative — one of {ko, en} must carry a headline.",
        -              "properties": {
        -                "evidence": {
        -                  "items": {
        -                    "type": "string"
        -                  },
        -                  "type": "array"
        -                },
        -                "headline": {
        -                  "type": "string"
        -                },
        -                "what_to_watch": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null
        -                }
        -              },
        -              "required": [
        -                "headline"
        -              ],
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _next_actions
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": true,
        -        "description": "One AI-actionable follow-up call recommendation.",
        -        "properties": {
        -          "args": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "intent": {
        -            "description": "Short intent label, max ~120 chars",
        -            "type": "string"
        -          },
        -          "priority": {
        -            "default": "normal",
        -            "enum": [
        -              "high",
        -              "normal",
        -              "low"
        -            ],
        -            "type": "string"
        -          },
        -          "rationale": {
        -            "default": "",
        -            "description": "Why this is recommended",
        -            "type": "string"
        -          },
        -          "tool": {
        -            "description": "Recommended tool name to invoke next",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "intent",
        -          "tool"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / _value_signals
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "additionalProperties": true,
        -      "description": "Static product/value metadata — same for every response of a tool type.",
        -      "properties": {
        -        "data_freshness_seconds": {
        -          "default": 120,
        -          "type": "integer"
        -        },
        -        "key_signup_url": {
        -          "default": "https://api.oneqaz.com/keys",
        -          "type": "string"
        -        },
        -        "pricing_url": {
        -          "default": "https://api.oneqaz.com/pricing",
        -          "type": "string"
        -        },
        -        "schema_version": {
        -          "default": "1.1",
        -          "type": "string"
        -        },
        -        "self_correcting": {
        -          "default": true,
        -          "type": "boolean"
        -        },
        -        "tier_default": {
        -          "default": "free",
        -          "enum": [
        -            "free",
        -            "pro",
        -            "internal"
        -          ],
        -          "type": "string"
        -        },
        -        "tier_default_limits": {
        -          "additionalProperties": {
        -            "type": "integer"
        -          },
        -          "type": "object"
        -        },
        -        "what_pro_unlocks": {
        -          "default": "33x daily quota (50K), 3.3x burst (200/min) — same tools, higher volume",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / action
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Recommended client action (error path)"
        -}
      • removedOutput schema / properties / action_value
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / ai_summary
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line AI-oriented summary (success path)"
        -}
      • removedOutput schema / properties / ai_summary_generated_at
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "RFC3339 UTC"
        -}
      • removedOutput schema / properties / ai_summary_ttl_seconds
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / error
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Set true on error responses"
        -}
      • removedOutput schema / properties / error_code
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Stable error identifier; see mcp_error_policy.md"
        -}
      • removedOutput schema / properties / fallback_note
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedOutput schema / properties / fallback_tool
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Suggested fallback (error path)"
        -}
      • removedOutput schema / properties / reason
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Human-readable cause (error path)"
        -}
      • removedOutput schema / properties / retryable
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Whether the client should retry (error path)"
        -}
      • removedOutput schema / properties / summary_for_user
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One-line jargon-free Korean summary (success path)"
        -}
    • Changedsearch2 fields changed
      • addedOutput schema / description
        Added value: +"`full_data` for search — 실응답에서 추출(2026-09-23)."
      • addedOutput schema / properties
        Added value: +{
        +  "results": {
        +    "items": {},
        +    "type": "array"
        +  }
        +}
  10. 3 tool updates
    • Changedget_positions2 fields changed
      • changedInput schema / properties / limit / default
        Previous value: -1000New value: +50
      • changedInput schema / properties / limit / description
        Previous value: -"Max results (default 1000)"New value: +"Max rows returned (default 50, max 1000). Rows are paginated; see total_available / truncated. NOTE: stats (profitable, avg_pnl, avg_ai_score) are aggregated over all open positions, not over the returned rows — see stats_scope."
    • Changedget_trade_history2 fields changed
      • changedInput schema / properties / limit / default
        Previous value: -1000New value: +50
      • changedInput schema / properties / limit / description
        Previous value: -"Max results (default 1000)"New value: +"Max rows returned (default 50, max 1000). Rows are paginated; see total_available / truncated. NOTE: stats (win_rate, avg_pnl) are aggregated over the scanned set, not over the returned rows — see stats_scope."
    • Changedget_trade_outcomes_bulk2 fields changed
      • changedInput schema / properties / limit / default
        Previous value: -200New value: +50
      • changedInput schema / properties / limit / description
        Previous value: -"page size (max 500)"New value: +"Page size (default 50, max 500). Cursor-paginated: follow next_cursor while has_more is true to retrieve everything."
  11. 38 tool updates
    • Changedanalyze_trades3 fields changed
      • addedInput schema / properties / days / description
        Added value: +"Analysis period in days (default 7, max 30)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedexplain_decision3 fields changed
      • addedInput schema / properties / market_id / description
        Added value: +"Market identifier (crypto, kr_stock, us_stock; aliases coin/kr/us)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / symbol / description
        Added value: +"Symbol to explain (e.g., btc, eth, 005930)"
    • Changedfetch1 field changed
      • addedInput schema / properties / id / description
        Added value: +"document id — \"tool:{name}\", \"resource:{uri}\", or \"signal:{market}:{symbol}\" (market: crypto / kr_stock / us_stock)"
    • Changedget_active_predictions5 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max active predictions to return (default 20)"
      • addedInput schema / properties / target_market / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / target_market / description
        Added value: +"Optional target market filter (coin_market, kr_market, us_market). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / target_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / target_market / type
        Removed value: -"string"
    • Changedget_backtest_tuning_state7 fields changed
      • addedInput schema / properties / category / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / category / description
        Added value: +"Optional category filter"
      • removedInput schema / properties / category / type
        Removed value: -"string"
      • addedInput schema / properties / target_market / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / target_market / description
        Added value: +"Optional target market filter. Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / target_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / target_market / type
        Removed value: -"string"
    • Changedget_cross_market_correlation8 fields changed
      • addedInput schema / properties / source_market / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / source_market / description
        Added value: +"Optional source market filter. Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / source_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / source_market / type
        Removed value: -"string"
      • addedInput schema / properties / target_market / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / target_market / description
        Added value: +"Optional target market filter. Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / target_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / target_market / type
        Removed value: -"string"
    • Changedget_daily_brief2 fields changed
      • addedInput schema / properties / market / description
        Added value: +"\"all\" (default, blends 3 markets), \"crypto\", \"kr_stock\", or \"us_stock\". Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market / enum
        Added value: +[
        +  "all",
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedget_feature_governance_state12 fields changed
      • addedInput schema / properties / market_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / market_id / description
        Added value: +"Optional market filter (defaults to coin). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / market_id / type
        Removed value: -"string"
      • addedInput schema / properties / status_filter / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / status_filter / description
        Added value: +"Optional status filter (OBSERVATION, CONDITIONAL, ACTIVE, DEPRECATED)"
      • addedInput schema / properties / status_filter / enum
        Added value: +[
        +  "OBSERVATION",
        +  "CONDITIONAL",
        +  "ACTIVE",
        +  "DEPRECATED"
        +]
      • removedInput schema / properties / status_filter / type
        Removed value: -"string"
      • addedInput schema / properties / target_market / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / target_market / description
        Added value: +"Alias for market_id (backward compat)"
      • addedInput schema / properties / target_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / target_market / type
        Removed value: -"string"
    • Changedget_latest_decisions9 fields changed
      • addedInput schema / properties / decision_filter / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / decision_filter / description
        Added value: +"Filter by decision (buy, sell, hold)"
      • removedInput schema / properties / decision_filter / type
        Removed value: -"string"
      • addedInput schema / properties / hours_back / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / hours_back / description
        Added value: +"Only decisions within last N hours"
      • removedInput schema / properties / hours_back / type
        Removed value: -"integer"
      • addedInput schema / properties / limit / description
        Added value: +"Max results (default 10)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedget_ledger_integrity1 field changed
      • addedInput schema / properties / days / description
        Added value: +"how many most-recent chain entries to return (max 400)"
    • Changedget_llm_trading_decisions5 fields changed
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock, commodity, forex, bond). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / symbol / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / symbol / description
        Added value: +"Specific symbol (optional; omit for entire market)"
      • removedInput schema / properties / symbol / type
        Removed value: -"string"
    • Changedget_losing_positions3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max results (default 20)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedget_losing_trades3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max results (default 10)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedget_macro_causality_graph_tool2 fields changed
      • addedInput schema / properties / max_p_value / description
        Added value: +"Maximum p-value (default 0.05)"
      • addedInput schema / properties / min_abs_corr / description
        Added value: +"Minimum |corr| (default 0.15)"
    • Changedget_macro_influence_map4 fields changed
      • addedInput schema / properties / market_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / market_id / description
        Added value: +"Optional target market filter (coin_market, kr_market, us_market). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / market_id / type
        Removed value: -"string"
    • Changedget_monthly_accuracy_trend7 fields changed
      • addedInput schema / properties / category / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / category / description
        Added value: +"Optional category filter"
      • removedInput schema / properties / category / type
        Removed value: -"string"
      • addedInput schema / properties / target_market / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / target_market / description
        Added value: +"Optional target market filter. Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / target_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / target_market / type
        Removed value: -"string"
    • Changedget_news_causality_breakdown3 fields changed
      • addedInput schema / properties / days / description
        Added value: +"Lookback window in days (default 7)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market identifier. Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedget_news_leading_indicator_performance7 fields changed
      • addedInput schema / properties / market_id / description
        Added value: +"Market identifier (crypto, kr_stock, us_stock, etc.). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / min_sample_count / description
        Added value: +"Minimum rows-per-grouping cutoff (default 3). A coverage filter only — it confers no statistical validity."
      • addedInput schema / properties / target_market / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / target_market / description
        Added value: +"Alias for market_id (backward compat)"
      • addedInput schema / properties / target_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / target_market / type
        Removed value: -"string"
    • Changedget_performance_metrics5 fields changed
      • addedInput schema / properties / account_type / description
        Added value: +"REQUIRED. 'paper' (simulated) or 'live' (real — not yet available)."
      • addedInput schema / properties / include_daily_curve / description
        Added value: +"include per-day equity curve rows (default false)."
      • addedInput schema / properties / market / description
        Added value: +"coin | kr | us | all (aliases crypto/kr_stock/us_stock accepted). 'all' = fixed 1/3 allocation across the three books."
      • addedInput schema / properties / window_end / description
        Added value: +"ISO date. Default today (KST)."
      • addedInput schema / properties / window_start / description
        Added value: +"ISO date (YYYY-MM-DD). Default 2026-06-16 (public track-record anchor)."
    • Changedget_position_detail4 fields changed
      • addedInput schema / properties / coin / description
        Added value: +"Legacy alias of symbol (kept for backward compatibility)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / symbol / description
        Added value: +"Asset identifier (preferred; e.g., BTC, ETH, AAPL)"
    • Changedget_positions8 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max results (default 1000)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / max_roi / description
        Added value: +"Max ROI % filter (e.g., 10.0)"
      • addedInput schema / properties / min_roi / description
        Added value: +"Min ROI % filter (e.g., -5.0)"
      • addedInput schema / properties / sort_by / description
        Added value: +"Sort field (profit_loss_pct, entry_timestamp, holding_duration, ai_score)"
      • addedInput schema / properties / sort_order / description
        Added value: +"Sort direction (desc, asc)"
      • addedInput schema / properties / strategy / description
        Added value: +"Strategy filter (e.g., trend, scalping)"
    • Changedget_prediction_accuracy7 fields changed
      • addedInput schema / properties / category / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / category / description
        Added value: +"Optional macro category filter (bonds, forex, vix, commodities, credit, liquidity, inflation, energy)"
      • removedInput schema / properties / category / type
        Removed value: -"string"
      • addedInput schema / properties / target_market / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / target_market / description
        Added value: +"Optional target market filter (coin_market, kr_market, us_market). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / target_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / target_market / type
        Removed value: -"string"
    • Changedget_profitable_positions3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max results (default 20)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedget_resolved_predictions7 fields changed
      • addedInput schema / properties / cursor / description
        Added value: +"last id from previous page (0 = start)"
      • addedInput schema / properties / day / description
        Added value: +"filter by created day \"YYYY-MM-DD\" (UTC, string prefix of created_at)"
      • addedInput schema / properties / limit / description
        Added value: +"page size (max 500)"
      • addedInput schema / properties / source_category / description
        Added value: +"filter e.g. \"vix\", \"bonds\", \"commodities\""
      • addedInput schema / properties / status / description
        Added value: +"\"all\" | \"resolved\" | \"open\""
      • addedInput schema / properties / target_market / description
        Added value: +"filter e.g. \"coin_market\" / \"kr_market\" / \"us_market\". Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / target_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedget_role_analysis4 fields changed
      • addedInput schema / properties / coin / description
        Added value: +"Legacy alias of symbol (kept for backward compatibility)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / symbol / description
        Added value: +"Asset identifier (preferred; e.g., BTC, AAPL)"
    • Changedget_sector_correlations_tool3 fields changed
      • addedInput schema / properties / market_id / description
        Added value: +"coin / kr_stock / us_stock. Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / top_k / description
        Added value: +"Number of top pairs to return"
    • Changedget_signal_calibration7 fields changed
      • addedInput schema / properties / interval / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / interval / description
        Added value: +"Optional candle interval filter (e.g. 15m, 30m, 240m, 1d)"
      • removedInput schema / properties / interval / type
        Removed value: -"string"
      • addedInput schema / properties / market_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / market_id / description
        Added value: +"Optional filter (crypto | kr_stock | us_stock)"
      • removedInput schema / properties / market_id / type
        Removed value: -"string"
      • addedInput schema / properties / variant / description
        Added value: +"\"v1\" (raw heuristic confidence, default) or \"v2\" (outcome-based shadow confidence — RCA C2, accumulating since 2026-07-21)"
    • Changedget_signal_detail6 fields changed
      • addedInput schema / properties / coin / description
        Added value: +"Legacy alias of symbol (kept for backward compatibility)"
      • addedInput schema / properties / interval / description
        Added value: +"Timeframe (default: combined)"
      • addedInput schema / properties / interval / enum
        Added value: +[
        +  "5m",
        +  "15m",
        +  "30m",
        +  "240m",
        +  "1d",
        +  "combined"
        +]
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / symbol / description
        Added value: +"Asset identifier (preferred; e.g., BTC, AAPL)"
    • Changedget_signals20 fields changed
      • addedInput schema / properties / action_filter / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / action_filter / description
        Added value: +"Action filter (buy, sell, hold)"
      • addedInput schema / properties / action_filter / enum
        Added value: +[
        +  "buy",
        +  "sell",
        +  "hold"
        +]
      • removedInput schema / properties / action_filter / type
        Removed value: -"string"
      • addedInput schema / properties / coin / description
        Added value: +"Legacy alias of symbol (kept for backward compatibility)"
      • addedInput schema / properties / hours_back / description
        Added value: +"Only signals within last N hours (default 24)"
      • addedInput schema / properties / interval / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / interval / description
        Added value: +"Timeframe filter (15m, 30m, 240m, 1d, combined)"
      • addedInput schema / properties / interval / enum
        Added value: +[
        +  "5m",
        +  "15m",
        +  "30m",
        +  "240m",
        +  "1d",
        +  "combined"
        +]
      • removedInput schema / properties / interval / type
        Removed value: -"string"
      • addedInput schema / properties / limit / description
        Added value: +"Max results (default 50, max 500; values outside the range are clamped)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / min_confidence / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / min_confidence / description
        Added value: +"Minimum confidence threshold"
      • removedInput schema / properties / min_confidence / type
        Removed value: -"number"
      • addedInput schema / properties / min_score / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / min_score / description
        Added value: +"Minimum signal score threshold"
      • removedInput schema / properties / min_score / type
        Removed value: -"number"
      • addedInput schema / properties / symbol / description
        Added value: +"Asset identifier to query (preferred; optional — targets a specific symbol DB)"
    • Changedget_strategy_distribution2 fields changed
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedget_strategy_leaderboard12 fields changed
      • addedInput schema / properties / include_per_symbol / description
        Added value: +"Include per-symbol PG partition results (default True)"
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / limit / description
        Added value: +"Alias for top_n (client-compat)"
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • addedInput schema / properties / market_id / description
        Added value: +"Market identifier (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / min_trades / description
        Added value: +"Minimum trades count for inclusion (default 10)"
      • addedInput schema / properties / target_market / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / target_market / description
        Added value: +"Alias for market_id (backward compat)"
      • addedInput schema / properties / target_market / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / target_market / type
        Removed value: -"string"
      • addedInput schema / properties / top_n / description
        Added value: +"Top N strategies to return (default 20)"
    • Changedget_structure_calibration7 fields changed
      • addedInput schema / properties / group_name / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / group_name / description
        Added value: +"Optional group/sector filter (e.g., layer1, defi, sector, broad_index)"
      • removedInput schema / properties / group_name / type
        Removed value: -"string"
      • addedInput schema / properties / market_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / market_id / description
        Added value: +"Optional market filter (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / market_id / type
        Removed value: -"string"
    • Changedget_structure_validation_history5 fields changed
      • addedInput schema / properties / days / description
        Added value: +"Lookback window in days (default 90)"
      • addedInput schema / properties / market_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / market_id / description
        Added value: +"Optional market filter. Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • removedInput schema / properties / market_id / type
        Removed value: -"string"
    • Changedget_symbol_peer_links_tool4 fields changed
      • addedInput schema / properties / market_id / description
        Added value: +"coin / kr_stock / us_stock. Aliases coin/kr/us and any letter case are accepted."
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / symbol / description
        Added value: +"Optional. When set, peers are anchored to this symbol."
      • addedInput schema / properties / top_k / description
        Added value: +"Number of top links to return"
    • Changedget_trade_history9 fields changed
      • addedInput schema / properties / action_filter / description
        Added value: +"Filter by action (all, buy, sell)"
      • addedInput schema / properties / action_filter / enum
        Added value: +[
        +  "buy",
        +  "sell",
        +  "hold"
        +]
      • addedInput schema / properties / hours_back / description
        Added value: +"Only trades within last N hours"
      • addedInput schema / properties / limit / description
        Added value: +"Max results (default 1000)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
      • addedInput schema / properties / max_pnl / description
        Added value: +"Max P&L % filter (e.g., 10.0)"
      • addedInput schema / properties / min_pnl / description
        Added value: +"Min P&L % filter (e.g., -5.0)"
      • addedInput schema / properties / symbol / description
        Added value: +"Filter by ticker symbol (e.g., \"BTC\", \"AAPL\"); case-insensitive"
    • Changedget_trade_outcomes_bulk4 fields changed
      • addedInput schema / properties / cursor / description
        Added value: +"last trade id from previous page (0 = start)"
      • addedInput schema / properties / days / description
        Added value: +"exit-time window in days (max 120)"
      • addedInput schema / properties / limit / description
        Added value: +"page size (max 500)"
      • addedInput schema / properties / market / description
        Added value: +"\"crypto\" (default) / \"kr_stock\" / \"us_stock\""
    • Changedget_winning_trades3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Max results (default 10)"
      • addedInput schema / properties / market_id / description
        Added value: +"Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)"
      • addedInput schema / properties / market_id / enum
        Added value: +[
        +  "crypto",
        +  "kr_stock",
        +  "us_stock"
        +]
    • Changedsearch1 field changed
      • addedInput schema / properties / query / description
        Added value: +"free-text search string (English/Korean, symbols like BTC/AAPL)"
  12. 2 tool updates
    • Changedget_feature_governance_state1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Max results (default 50, max 500). Rows are truncated; see `total_available` and `truncated` in the response. `status_summary` and `meta` counts stay whole-set.",
        +  "type": "integer"
        +}
    • Changedget_structure_calibration1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Max results (default 50, max 500). Rows are truncated; see `total_available` and `truncated` in the response. `baseline` and `meta` counts stay whole-set.",
        +  "type": "integer"
        +}
  13. 2 tool updates
    • Changedget_daily_brief1 field changed
      • changedOutput schema / properties / full_data / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "description": "`full_data` for get_daily_brief.",
        -    "properties": {
        -      "active_predictions_count": {
        -        "default": 0,
        -        "type": "integer"
        -      },
        -      "losing_count": {
        -        "default": 0,
        -        "type": "integer"
        -      },
        -      "macro_regime": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "categories": {
        -            "items": {},
        -            "type": "array"
        -          },
        -          "total": {
        -            "default": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "market": {
        -        "type": "string"
        -      },
        -      "meta": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "data_window": {
        -            "default": "last_24h",
        -            "type": "string"
        -          },
        -          "interpretation": {
        -            "default": "",
        -            "type": "string"
        -          },
        -          "source": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "narrative": {
        -        "type": "string"
        -      },
        -      "primary_market": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "strong_signals": {
        -        "items": {
        -          "additionalProperties": true,
        -          "properties": {
        -            "action": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "confidence": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "interval": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "market_id": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "price": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "signal_score": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "symbol": {
        -              "type": "string"
        -            },
        -            "timestamp": {
        -              "anyOf": [
        -                {
        -                  "type": "integer"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            }
        -          },
        -          "required": [
        -            "symbol"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "winning_count": {
        -        "default": 0,
        -        "type": "integer"
        -      },
        -      "yesterday_trades": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "by_market": {
        -            "additionalProperties": {
        -              "additionalProperties": true,
        -              "type": "object"
        -            },
        -            "type": "object"
        -          },
        -          "losing": {
        -            "default": 0,
        -            "type": "integer"
        -          },
        -          "total": {
        -            "default": 0,
        -            "type": "integer"
        -          },
        -          "winning": {
        -            "default": 0,
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "market",
        -      "narrative"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "`full_data` for get_daily_brief.",
        +    "properties": {
        +      "active_predictions_count": {
        +        "default": 0,
        +        "type": "integer"
        +      },
        +      "losing_count": {
        +        "default": 0,
        +        "type": "integer"
        +      },
        +      "macro_regime": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "categories": {
        +            "items": {},
        +            "type": "array"
        +          },
        +          "total": {
        +            "default": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "market": {
        +        "type": "string"
        +      },
        +      "meta": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "data_window": {
        +            "default": "last_24h",
        +            "type": "string"
        +          },
        +          "interpretation": {
        +            "default": "",
        +            "type": "string"
        +          },
        +          "source": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "narrative": {
        +        "type": "string"
        +      },
        +      "primary_market": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "strong_signals": {
        +        "items": {
        +          "additionalProperties": true,
        +          "properties": {
        +            "action": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "confidence": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "interval": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "market_id": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "price": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "reason_uncalibrated": {
        +              "anyOf": [
        +                {
        +                  "type": "boolean"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "signal_score": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "symbol": {
        +              "type": "string"
        +            },
        +            "timestamp": {
        +              "anyOf": [
        +                {
        +                  "type": "integer"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "warnings": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {
        +                    "type": "boolean"
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            }
        +          },
        +          "required": [
        +            "symbol"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "winning_count": {
        +        "default": 0,
        +        "type": "integer"
        +      },
        +      "yesterday_trades": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "by_market": {
        +            "additionalProperties": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "type": "object"
        +          },
        +          "losing": {
        +            "default": 0,
        +            "type": "integer"
        +          },
        +          "total": {
        +            "default": 0,
        +            "type": "integer"
        +          },
        +          "winning": {
        +            "default": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "market",
        +      "narrative"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_signals2 fields changed
      • changedInput schema / properties / limit / default
        Previous value: -500New value: +50
      • changedOutput schema / properties / full_data / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "description": "`full_data` for get_signals.",
        -    "properties": {
        -      "filters": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "market_id": {
        -        "type": "string"
        -      },
        -      "signals": {
        -        "items": {
        -          "additionalProperties": true,
        -          "properties": {
        -            "action": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "confidence": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "interval": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "market_id": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "price": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "signal_score": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            },
        -            "symbol": {
        -              "type": "string"
        -            },
        -            "timestamp": {
        -              "anyOf": [
        -                {
        -                  "type": "integer"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "default": null
        -            }
        -          },
        -          "required": [
        -            "symbol"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "market_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "`full_data` for get_signals.",
        +    "properties": {
        +      "common": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "filters": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "limit": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "market_id": {
        +        "type": "string"
        +      },
        +      "returned": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "signals": {
        +        "items": {
        +          "additionalProperties": true,
        +          "properties": {
        +            "action": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "confidence": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "interval": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "market_id": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "price": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "reason_uncalibrated": {
        +              "anyOf": [
        +                {
        +                  "type": "boolean"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "signal_score": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "symbol": {
        +              "type": "string"
        +            },
        +            "timestamp": {
        +              "anyOf": [
        +                {
        +                  "type": "integer"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            },
        +            "warnings": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {
        +                    "type": "boolean"
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            }
        +          },
        +          "required": [
        +            "symbol"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "truncated": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "required": [
        +      "market_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.