Skip to main content
Glama

OneQAZ Trading Intelligence

Server Details

Live market data, signals, positions, and macro analysis for crypto, KR stocks, and US stocks.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
oneqaz-trading/oneqaz-trading-mcp
GitHub Stars
0
Server Listing
oneqaz-trading-mcp

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.7/5 across 39 of 39 tools scored.

Server CoherenceA
Disambiguation4/5

Most tools have clearly distinct purposes, but there are overlapping areas such as get_feature_governance_state vs get_feature_governance_status_tool and the convenience wrappers for losing/winning positions/trades. Descriptions clarify relationships well, so confusion is limited.

Naming Consistency4/5

The vast majority follow a consistent 'get_' prefix with descriptive nouns, but inconsistencies exist: some tools have '_tool' suffix (e.g., get_macro_causality_graph_tool) while similar ones do not, and governance tools use 'state' vs 'status_tool'. Overall, the pattern is predictable.

Tool Count2/5

39 tools is excessive for the apparent scope. Many are redundant convenience wrappers (get_losing_positions, get_winning_trades, etc.) that duplicate filters on other tools, and there are near-duplicate governance tools. The count could be significantly consolidated.

Completeness5/5

The tool surface is remarkably comprehensive, covering signals, trades, predictions, positions, macro relationships, news causality, strategies, structure, governance, and ledger integrity. There are no obvious functional gaps, and the tools form a well-integrated evidence chain.

Available Tools

39 tools
analyze_tradesA
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.

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted) days: Analysis period in days (default 7, max 30)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description discloses meaningful behavior: it operates on paper trades, enforces a max 30-day window, and returns empty result when no trades exist. It also flags that it is informational only, adding context at the edge-case level.

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 description is well-structured with labeled sections and front-loaded purpose. It is slightly long due to trigger examples and a disclaimer, but every section adds actionable value for an agent.

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?

Combined with an output schema and rich annotations, the description covers purpose, triggers, prerequisites, caveats, edge cases, and parameter semantics. There is no obvious gap for an agent selecting or invoking this tool.

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

Parameters5/5

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

Schema has 0% description coverage, but the description fully compensates by documenting each argument: market_id values and accepted aliases (coin/kr/us), and days default/max. This exceeds what the bare schema provides.

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 opens with 'Aggregate paper trades by day / pattern / symbol', which is a specific verb and resource. It clearly differentiates from sibling tools like get_trade_history (raw rows) by emphasizing aggregation and grouping.

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 ('how's the week been?', 'which patterns are working?'), a 'When to call' section, prerequisites recommending get_trade_history for raw rows, and next steps. This is strong guidance on when and how to use the tool relative to alternatives.

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

explain_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.

Args: market_id: Market identifier (crypto, kr_stock, us_stock; aliases coin/kr/us) symbol: Symbol to explain (e.g., btc, eth, 005930)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description does not contradict these. It adds meaningful context: the output is 'research evidence, NOT a buy or sell recommendation' and includes a caveat about symbol matching the lowercase filename. This goes beyond the structured annotations by explaining the nature and limitations of the return 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?

The description is well-structured with clear headings (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer) and front-loaded with the core purpose. While the trigger examples are helpful, they are somewhat redundant given the explicit 'When to call' section, making the text slightly longer than strictly necessary.

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 tool that aggregates multiple data sources, the description is remarkably complete. It explains the composition of the return (three components), provides prerequisites, notes that it ends the explanation chain, and includes a disclaimer. Even without seeing the output schema, the agent understands what to expect and how to prepare inputs.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries full responsibility. It provides substantial semantics: market_id lists allowed values and aliases ('crypto, kr_stock, us_stock; aliases coin/kr/us'), and symbol gives concrete examples ('btc, eth, 005930') plus the lowercase rule. This fully compensates for the schema's missing 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?

The description begins with a specific verb-resource combination: 'Multi-layer explanation for a single symbol's recent research signal.' It enumerates the three combined components (technical score_trace, Thompson + regime scores, news causality) which clearly distinguishes it from sibling getter tools. The statement 'present a structured "why" rather than a raw verdict' further differentiates it from tools that return raw data or verdicts.

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 'Use this when' and 'When to call' instructions are provided, including example triggers in both English and Korean. Prerequisites identify prior steps ('identify the symbol via get_signals or get_latest_decisions first') and 'Next steps: none' clarifies workflow completeness. However, it does not explicitly name alternative tools to avoid, so it lacks direct exclusions.

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

fetchA
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.

Args: id: document id — "tool:{name}", "resource:{uri}", or "signal:{market}:{symbol}" (market: crypto / kr_stock / us_stock)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already set readOnlyHint=true, openWorldHint=true, idempotentHint=true. The description adds valuable behavioral context beyond annotations: 'uncovered resource uris return description-only text (no fabricated data)' and '`text` is a JSON document for resource/signal ids.' This gives the agent critical expectations about output format and data limitations without contradicting 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.

Conciseness5/5

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

The description is long but every section serves a purpose: Purpose, Namespaces, Triggers, When to call, Prerequisites, Next steps, Caveats, Output, Args, Disclaimer. It is well-organized and front-loaded with the most critical information. No filler or redundancy.

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 the tool's complexity (multiple id namespaces, output shapes, and caveats) and the minimal schema, the description is remarkably complete. It covers what the tool returns, how to invoke it for different resource types, error behavior (description-only text), and next actions. The presence of an output schema is acknowledged and the description lists the envelope fields.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates with a dedicated 'Args' section explaining the `id` parameter's namespace formats and examples: 'tool:{name}', 'resource:{uri}', 'signal:{market}:{symbol}'. This is far richer than the bare schema and leaves no ambiguity about the parameter's meaning.

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 clearly states the tool's function: 'standard document fetch by id from `search` results.' It specifies the resource (document), the verb (fetch), and how it relates to search, effectively distinguishing it from the sibling tools like `search` and `get_signal_detail`. The namespaces (`tool:`, `resource:`, `signal:`) further clarify scope.

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-use guidance: 'Triggers: ChatGPT connectors / Deep Research call this after `search`' and 'When to call: whenever the full content behind a search result id is needed.' It also names alternatives for next steps (e.g., `get_signal_detail` / `explain_decision` for deeper evidence), clearly differentiating from other tools.

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

get_active_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.

Args: target_market: Optional target market filter (coin_market, kr_market, us_market) limit: Max active predictions to return (default 20)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
target_marketNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds meaningful behavioral details beyond this: the outcome IS NULL condition, the 'returns most recent first' caveat, and the demonstration of real-time publishing. No contradiction with annotations is present.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the purpose, followed by triggers, when-to-call, prerequisites, next steps, caveats, and args. While the trigger examples and explanatory sentences are somewhat verbose, each section is purposeful and 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?

Given the tool's simplicity (2 optional parameters) and the presence of an output schema, the description covers all necessary context: prerequisites, next steps, caveats, parameter semantics, and usage triggers. It is complete for an agent to decide when and how to invoke it.

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

Parameters5/5

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

Despite 0% schema description coverage, the description fully compensates by explaining target_market as an optional filter with allowed values (coin_market, kr_market, us_market), and limit as a maximum with a default of 20. This adds clear meaning beyond the bare schema types.

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 'Purpose' line explicitly defines the tool's function: returns currently pending predictions (outcome IS NULL), and the 'When to call' section clarifies its role in verifying ongoing prediction activity. This clearly distinguishes it from related sibling tools like get_resolved_predictions by emphasizing the 'active/pending' scope.

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 a dedicated 'When to call' section, prerequisites, next steps, and caveats. It names get_prediction_accuracy as a next step, giving useful context. However, it does not explicitly state when not to use the tool or directly name an alternative like get_resolved_predictions, so it falls short of a 5.

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

get_backtest_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.

Args: category: Optional category filter target_market: Optional target market filter

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
target_marketNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is known. The description adds valuable behavioral context with the caveat that 'last_backtest timestamp indicates tuning freshness' and clarifies that data is 'derived from real backtest outcomes'. This goes beyond the annotations without contradicting them.

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 description is well-structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer) and front-loads the purpose. However, it is somewhat verbose with extensive trigger examples and a boilerplate disclaimer, which could be trimmed without losing essential 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?

With an output schema present, return values are covered. The description provides purpose, triggers, usage sequence, prerequisites, caveats, and parameter explanations, making it highly complete for a read-only, idempotent tool. The caveat about timestamp freshness is a nice contextual addition.

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?

The input schema provides only type and default for each parameter (category, target_market) with zero description coverage. The description adds 'Optional category filter' and 'Optional target market filter', which confirms they are optional filters but doesn't elaborate on allowed values or formats. This is minimal compensation for the schema gap.

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 clearly states the tool's purpose: 'Continuous self-calibration evidence' showing auto-tuned lag_hours and sensitivity per cell derived from real backtest outcomes. It uses a specific resource (backtest tuning state) and distinguishes itself from sibling tools like get_signal_calibration and 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?

Provides explicit 'When to call' context after get_prediction_accuracy, lists 'Prerequisites' and 'Next steps' (get_monthly_accuracy_trend), and includes a comprehensive list of trigger phrases. This gives clear guidance on when to use the tool and how it fits into a sequence, even though it doesn't name an alternative tool to avoid.

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

get_cross_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.

Args: source_market: Optional source market filter target_market: Optional target market filter

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_marketNo
target_marketNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint as true, establishing safety profile. The description adds valuable caveat that correlation data may be empty until enough regime changes accumulate, which is beyond what annotations provide. However, no additional behavioral details about output format or edge cases are disclosed.

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?

Description is well-structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer). Every section adds value, though 'Purpose' and 'Triggers' overlap slightly. It's slightly verbose but remains clear and scannable.

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?

Has an output schema, so return values are covered structurally. Description provides context for macro regime analysis, sibling differentiation via next steps, triggers, and caveats. The inclusion of multilingual triggers and explicit alternatives makes it complete for an AI agent.

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 has 0% description coverage and only raw names (source_market, target_market). The description compensates by stating each is an 'Optional source market filter' / 'Optional target market filter', adding meaning about their purpose as filters. This is minimal but sufficient for such simple parameters.

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?

Description clearly states the tool's purpose: showing cross-market lead-lag relationships and decoupling events. It specifies the resource (market correlation) and the specific insights (correlations and divergences), distinguishing it from sibling tools like get_sector_correlations_tool and get_macro_influence_map.

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 with example queries, when-to-call guidance, prerequisites ('none'), next steps (get_macro_influence_map), and caveats. This is comprehensive guidance for when to use this tool vs alternatives.

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

get_daily_briefA
Read-onlyIdempotent
Inspect

Purpose: Single-call market overview — macro regime + top 5 strong signals + 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: 24-hour window. Paper-trading data only (NOT real money). Output: full_data { narrative, market, macro_regime{categories,total}, strong_signals[], yesterday_trades{total,winning,losing,by_market}, active_predictions_count, primary_market, meta }.

Args: market: "all" (default, blends 3 markets), "crypto", "kr_stock", or "us_stock"

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior5/5

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

Beyond the readOnlyHint, openWorldHint, and idempotentHint annotations, the description adds critical behavioral caveats: a 24-hour window and that data is paper-trading only, not real money. It also discloses the output shape and the existence of `_next_actions`, which is valuable operational context.

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?

The description is longer than average but every section earns its place, with clear labels like 'Purpose', 'Triggers', 'When to call', 'Prerequisites', 'Next steps', 'Caveats', and 'Output'. It is front-loaded with the essential purpose and uses efficient formatting; no filler or redundant repetition.

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 the modest complexity of one parameter, the description is fully complete: it covers purpose, invocation triggers, usage position relative to other tools, prerequisites, caveats, and a breakdown of the output fields. The presence of an output schema is supplemented, not replaced, by a clear enumeration of the returned full_data structure.

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

Parameters5/5

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

Even though the input schema has no parameter description and 0% schema coverage, the description fully documents the `market` parameter, including its default of 'all' and the allowed values 'crypto', 'kr_stock', and 'us_stock'. This compensates completely for the schema gap and adds practical meaning.

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 opens with 'Purpose: Single-call market overview' and enumerates a specific, concrete bundle: macro regime, top strong signals, yesterday's paper-trading outcomes, active forecast count, and narrative. This clearly distinguishes it from the many sibling tools that each handle one narrower concern.

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 explicitly says 'Use this as the first call when answering "how is the market today?"' and provides a rich set of trigger phrases and when-to-call scenarios. It also advises preferring this over answering from training data, and names next-step tools for deeper dives.

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

get_feature_governance_stateA
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.

Args: market_id: Optional market filter (defaults to coin) target_market: Alias for market_id (backward compat) status_filter: Optional status filter (OBSERVATION, CONDITIONAL, ACTIVE, DEPRECATED)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNo
status_filterNo
target_marketNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond the annotations (readOnlyHint, openWorldHint, idempotentHint), the description discloses that results can be empty when feature_gate_evaluator has not run cycles yet, and explains the lifecycle semantics. This adds valuable behavioral context about state transitions and reliance on underlying system execution.

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 description is well-structured with clear sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer). It is slightly verbose, especially the trigger list, but every section earns its place and the purpose is front-loaded.

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

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 with an output schema and strong annotations, the description is thorough: it covers purpose, usage context, parameter semantics, and a key edge case (empty result). It provides all necessary information for an agent to select and invoke the tool 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?

The schema has zero parameter descriptions, but the Args section explains all three parameters: market_id defaults to coin, target_market is a backward-compatible alias, and status_filter accepts enumerated lifecycle states. This compensates well for the schema gap, though 'defaults to coin' could be more explicit about the default value.

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 clearly states the tool returns the current lifecycle state of external features under 3-track statistical validation, with a concrete state model. It provides specific trigger questions and distinguishes itself from siblings by focusing on lifecycle states, making the tool's purpose unambiguous.

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 provides explicit 'When to call' guidance (meta-level trust audit) and lists trigger phrases, but it does not directly contrast with the similarly named sibling get_feature_governance_status_tool. It gives clear context for when to use this tool, but no explicit alternatives or exclusions.

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

get_feature_governance_status_toolA
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.

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint; the description adds operational context by noting the promoter cycle runs hourly and that the snapshot surfaces survival/deprecation outcomes. This goes beyond the structured hints and clarifies update cadence and expected content.

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 description is organized into labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats) and is front-loaded with the core purpose. It is slightly wordy with multiple trigger examples and a generic disclaimer, but each section 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?

Given zero parameters and the presence of an output schema, the description is fully complete: it explains what the snapshot contains, when to use it, prerequisites, the hourly caveat, and directs to the sibling tool for deeper detail. No critical information 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?

The tool has zero parameters and the schema coverage is 100%, so no parameter explanation is necessary. The baseline of 4 applies because there are no parameters to clarify and the description appropriately focuses on behavior rather than input.

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 clearly states it provides a feature governance snapshot with OBSERVATION/CONDITIONAL/ACTIVE/DEPRECATED distribution and last 7-day transitions. It also distinguishes itself from the sibling get_feature_governance_state by pointing to that tool for 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?

It explicitly lists Triggers and 'When to call' with concrete examples (e.g., 'which features are actually used?', trust evaluation). It also names get_feature_governance_state as the alternative for more detailed lifecycle information, which helps with tool selection.

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

get_latest_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.

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted) limit: Max results (default 10) decision_filter: Filter by decision (buy, sell, hold) hours_back: Only decisions within last N hours

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
market_idYes
hours_backNo
decision_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, lowering the burden. The description adds valuable behavioral context: 'paper-trading decisions only — no real-money order routing', the log nature, and that outcomes are included. It also notes prerequisites and caveats, going beyond the structured safety profile without contradicting 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?

The description is compactly structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer). Every section adds distinct value, though the trigger examples are somewhat repetitive. Overall, it is well-organized and front-loaded with the core purpose.

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?

Given the 4 parameters, output schema presence, and rich annotations, the description covers all necessary aspects: purpose, usage context, prerequisites, next steps, caveats, and parameter semantics. It does not need to describe return values because an output schema exists. Minor gaps are acceptable (e.g., exact outcome format), so it is complete for practical invocation.

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 0%, so the description must compensate. The Args section gives meaningful semantics: market_id with accepted values and aliases, limit with default, decision_filter enumerates choices (buy, sell, hold), hours_back explains 'only decisions within last N hours'. This adds purpose to each parameter beyond the bare 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 clearly states the tool's purpose: 'Track-B (signal-driven) paper-trading decision log', with an explicit contrast to Track A (LLM judgement path) via 'see get_llm_trading_decisions'. It names specific verbs like 'review recent automated decisions and their outcomes', which distinguishes it from siblings and explains its scope.

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?

The description provides explicit usage guidance: 'When to call', example triggers, prerequisites ('market://{market_id}/status recommended'), and next steps ('get_trade_history, get_signals'). It also differentiates from alternative Track B vs Track A, directing to get_llm_trading_decisions for the other path, which fulfills the when/when-not requirement.

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

get_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 }.

Args: days: how many most-recent chain entries to return (max 400)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already mark the tool as read-only, open-world, and idempotent. The description adds valuable behavioral context: the hash chain begins 2026-03-22, hashes are computed once daily (UTC), and entries are append-only at the serving-role level. It also discloses the verification_hint output, exceeding what 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?

The description is well-structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Output, Args) and front-loaded with the core purpose. It is slightly long but every section provides actionable information without redundancy.

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?

Despite having an output schema, the description goes beyond by explaining the output shape, caveats, prerequisites, and usage context. Given the tool's complexity, this is fully complete and leaves no critical gaps for an agent to understand when and how to invoke it.

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

Parameters5/5

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

The sole parameter 'days' is explained in the description as 'how many most-recent chain entries to return (max 400)', adding crucial semantics beyond the schema which only specifies type and default. This fully compensates for the 0% schema description coverage.

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 clearly states the tool's purpose: tamper-evidence for the prediction ledger via a SHA-256 hash chain with a published canonical recipe. It specifies the resource (prediction ledger) and the verb (get integrity/verify), and it is clearly distinct from sibling tools like get_resolved_predictions.

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, 'when to call' guidance, prerequisites, and suggested next steps. It even names the sibling tool to use for raw rows and frames this as the first step in credibility audits, making alternatives and context clear.

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

get_llm_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.

Args: market_id: Market ID (crypto, kr_stock, us_stock, commodity, forex, bond) symbol: Specific symbol (optional; omit for entire market)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNo
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the description adds valuable context beyond them: the tool is paper-trading only, and the LLM judgement is a 'capped bias on top of engine signals'. This provides behavioral nuance without contradicting annotations.

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?

Structured with clear headers (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer) and front-loaded with the purpose. Every section adds functional value, including the multilingual trigger examples, without redundancy.

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?

The description covers purpose, usage context, exclusions, parameter semantics, and caveats, while the output schema and annotations handle return types and safety profile. It is fully complete for an agent to select and invoke correctly.

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

Parameters5/5

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

Schema has no descriptions (0% coverage), but the description fully compensates by defining market_id with allowed values (crypto, kr_stock, us_stock, commodity, forex, bond) and explaining symbol as optional and market-scoping. This is exactly the semantic detail an agent needs.

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 explicitly states 'Purpose: Track-A (LLM-driven) paper-trading judgement log' and differentiates Track A from Track B (signal-engine path) by referencing get_latest_decisions. It clearly identifies the verb (get/inspect) and resource (LLM-generated trading decisions).

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' guidance ('inspect LLM-generated reasoning and trade calls'), prerequisites ('none'), and next steps ('get_latest_decisions to compare with Track B'), directly addressing when to use this tool versus the sibling alternative.

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

get_losing_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.

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted) limit: Max results (default 20)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already declare readOnly, idempotent, and openWorld. The description adds critical context that the data is paper-trading only and that this is a convenience wrapper that pre-filters by max_roi. It also includes a disclaimer that the output is informational, not advice. No contradiction with annotations.

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

Conciseness5/5

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

The description is methodically structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer). Every section adds distinct value — the trigger examples are targeted at understanding user intent, and the caveat is essential for data context. It is front-loaded with purpose and wrapper definition.

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, filtered list tool with an output schema, the description covers all necessary context: what it returns, when to invoke it, what parameters mean, what data scope applies, and what to do next. The existence of an output schema means it does not need to enumerate return fields. This is a complete and self-sufficient tool description.

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

Parameters5/5

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

Schema coverage is 0%, but the description compensates fully. It defines market_id with allowed values (crypto, kr_stock, us_stock) and aliases (coin/kr/us), and defines limit as max results with a default of 20. This goes well beyond the bare schema and explains the wrapper's implicit max_roi parameter.

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 clearly it returns 'Losing paper positions (ROI < 0)' and calls itself a wrapper around get_positions(max_roi=-0.01), which precisely describes the action and resource. The sibling get_losing_trades vs positions distinction is clear, and the parenthetical ROI condition disambiguates from other list tools.

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 provides triggers ('what's underwater?', 'show me the red ones'), a 'When to call' line (drawdown / risk review), and a 'Next steps' chain (get_position_detail, get_role_analysis). It also notes there are no prerequisites, and by referencing itself as a convenience wrapper it implies that get_positions is the alternative for unfiltered view.

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

get_losing_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.

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted) limit: Max results (default 10)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, lowering the burden. The description adds valuable context: data is paper-trading only, and the loss threshold is defined. It doesn't mention pagination or rate limits, but the output schema exists and the safety profile is covered by 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?

Well-structured with labeled sections and front-loaded purpose. The trigger examples and disclaimer are somewhat verbose, but each section contributes to usability, so it remains efficient.

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?

Covers purpose, triggers, when to call, prerequisites, next steps, caveats, and parameter explanations. Output schema eliminates the need for return-value details. For a simple two-parameter tool, the description is fully complete and contextually rich.

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

Parameters5/5

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

Schema properties have no descriptions (0% coverage), but the description fully compensates: explains market_id accepts crypto/kr_stock/us_stock with aliases, and limit has a default of 10. This goes far beyond the bare schema and tells the agent exactly what values are valid.

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?

Clearly states it returns losing paper trades only (P&L < 0), and identifies as a convenience wrapper around get_trade_history(max_pnl=-0.01). This distinguishes it from sibling tools like get_winning_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: failure-pattern review' and lists example trigger phrases. The wrapper mention points to get_trade_history as a more flexible alternative, and next steps suggest analyze_trades, giving clear context on when and how to use.

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_toolA
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.

Args: min_abs_corr: Minimum |corr| (default 0.15) max_p_value: Maximum p-value (default 0.05)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_p_valueNo
min_abs_corrNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds statistical caveats: Pearson-based, requires >=30 samples, p<0.05 filter, and notes that only statistically significant pairs are returned. This is useful beyond annotations, though no other behavioral traits (e.g., time range semantics) are mentioned.

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 description is structured with clear headings (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args) and is front-loaded with purpose. It is somewhat verbose with example queries, but every section earns its place, offering actionable guidance without excessive repetition.

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?

Despite having an output schema (so return values are covered elsewhere), the description provides complete context for a read-only analytical tool: what it does, when to use it, prerequisites, caveats, and next steps. It leaves no significant gaps for an agent to misuse the tool.

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

Parameters5/5

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

The input schema provides only types and defaults (0% coverage), so the description carries the full burden. It explicitly defines each parameter: 'min_abs_corr: Minimum |corr|' and 'max_p_value: Maximum p-value', adding meaning the schema lacks. This fully compensates for the missing schema 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?

The description states a specific verb+resource: 'Lag-aware causal graph between macro categories' and specifies the categories. It clearly differentiates from siblings like get_macro_influence_map by focusing on lead-lag pairs among macro categories, not category-to-market impact.

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 provides triggers ('what happens to VIX when bonds move?'), the specific context ('assess pre-emptive cross-category impact after a macro event'), prerequisites ('none'), and a next step (get_macro_influence_map) for an alternative use case. This distinguishes when to use this tool versus others.

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

get_macro_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. Highest-transparency tool — the causal reasoning is visible and measurable. 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: static hypothesis only; see tuning state for current adjustments.

Args: market_id: Optional target market filter (coin_market, kr_market, us_market)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, covering the safety and idempotency profile. The description adds meaningful behavioral context beyond these: the tool is 'static hypothesis only' and does not reflect runtime tuning adjustments. It also states 'Information only, not investment advice' as a disclaimer. Given the low bar set by annotations, this is solid added value.

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?

The description is organized with clear labels (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer). Each sentence serves a purpose, and the structure is front-loaded with the core purpose. While it is not terse, the length is justified by the useful contextual information, and nothing feels redundant or wasteful.

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 tool with one optional parameter and an existing output schema, the description covers all essential dimensions: purpose, usage triggers, prerequisites, related tools, caveats, and arguments. It even provides an explicit disclaimer. The only thing not explained is the return structure, but since an output schema exists, that is not required.

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 input schema is minimal (one optional string market_id) with 0% schema description coverage. The description compensates by listing possible values: 'coin_market, kr_market, us_market', and clarifies it is an 'Optional target market filter'. This gives the agent actionable information beyond the bare schema, though it could elaborate on default behavior (e.g., no filter returns all markets).

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 uses a specific verb 'Expose' and a concrete resource: 'OneQAZ's pre-defined causal hypothesis map', detailing the content (macro categories mapped to target markets with lag_hours + sensitivity). It differentiates from sibling tools by highlighting its 'highest-transparency' nature and caveat that it is 'static hypothesis only', clearly separating it from dynamic counterparts like get_backtest_tuning_state.

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?

The description provides explicit 'When to call' guidance ('when an AI wants to understand WHY we make certain predictions'), concrete trigger examples (including a Korean query), and a 'Next steps' reference to get_backtest_tuning_state for runtime calibration. It also directs users away from this tool for current adjustments via the caveat, effectively naming an alternative.

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

get_monthly_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.

Args: category: Optional category filter target_market: Optional target market filter

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
target_marketNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds valuable caveats about excluding the 'all' month aggregate and being empty when backtest_results is unpopulated, which goes beyond the structured metadata. No contradiction with annotations.

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

Conciseness4/5

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

The description is well-structured with labeled sections (Purpose, Triggers, When to call, Caveats) and front-loaded purpose. It is a bit lengthy due to trigger examples and disclaimer, but each section earns its place and improves usability.

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 the output schema exists, the description covers the essential context: purpose, triggers, usage chain, prerequisites, caveats, and disclaimer. The tool is simple (2 optional params) and the description fully enables correct selection and invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter semantics. It only restates 'Optional category filter' and 'Optional target market filter', adding no format, allowed values, or behavior details. The parameter names are self-evident but the description adds minimal value over the bare 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 clearly states 'Monthly accuracy time series per (category, target_market, lag_bucket)' with a specific verb ('verify') and resource. It distinguishes itself from siblings like get_prediction_accuracy by emphasizing the time-series/trend aspect and explicitly listing trigger phrases for degradation detection.

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 guidance ('after get_prediction_accuracy and get_backtest_tuning_state'), prerequisites, next steps ('trust chain complete'), and example trigger questions. This fully orients the agent on placement relative to alternatives.

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

get_news_causality_breakdownA
Read-onlyIdempotent
Inspect

Purpose: Three-bucket news classification proving systematic discrimination between anticipated and surprise events. ANTICIPATED = scheduled + pre-move detected, SURPRISE_WITH_PRECURSOR = cascade anomaly (macro -> ETF -> stock) caught early, SURPRISE = pure unexpected. Triggers (casual questions too): "was that news already priced in?", "그 뉴스 예견된 거였어?", "how many surprise events this week?", "돌발 뉴스 비율 어때?", "did the market see it coming?". When to call: after get_news_leading_indicator_performance. Prerequisites: none. Next steps: market://{market_id}/external/causality for raw causality data. Caveats: window limited to recent days.

Args: market_id: Market identifier days: Lookback window in days (default 7)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
market_idNocrypto

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds operational caveats like 'window limited to recent days' and a disclaimer, which enrich understanding without contradicting annotations. It does not reveal potential rate limits or data availability issues, but the added context is valuable.

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 description is organized into labeled sections (Purpose, Triggers, When to call, Next steps, Caveats, Args, Disclaimer), making it scannable. It is somewhat verbose due to multilingual trigger examples and overclaiming language, but every section earns its place and the purpose is front-loaded.

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

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 are handled separately. The description provides prerequisites, sequencing relative to a sibling tool, next steps, and caveats, making it sufficiently complete for a read-only tool with open-world behavior. It lacks details on data freshness or edge cases, but overall coverage is strong.

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

Parameters2/5

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

Schema has 0% description coverage, so the description must compensate. However, it only repeats the parameter names with minimal gloss (e.g., 'market_id: Market identifier', 'days: Lookback window in days'), adding no new meaning, examples, or constraints. The vague caveat about 'recent days' is the only extra hint, but it is insufficient.

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 clearly states the tool's function: classifying news into three buckets (anticipated, surprise with precursor, pure surprise). It uses specific terminology and defines each category, distinguishing it from sibling tools that focus on other news-related analytics.

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 usage context: 'When to call: after get_news_leading_indicator_performance' and lists trigger questions in multiple languages. It also includes prerequisites and next steps, giving clear guidance on when and how to use this tool relative to alternatives.

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_performanceA
Read-onlyIdempotent
Inspect

Purpose: Evidence that OneQAZ detects price moves BEFORE news publication. Returns leading_score, avg_lead_time_minutes, and accuracy_pct per event type. Strongest Trust Layer A evidence (Layer A = anticipation-capability tier of OneQAZ's 5-layer trust pyramid) — proves the system is anticipatory rather than reactive. Triggers (casual questions too): "can you predict news?", "뉴스 나오기 전에 감지해?", "how early do you catch moves?", "뉴스보다 빨라?", "do prices move before headlines?". When to call: when an AI is evaluating predictive capability. Prerequisites: none. Next steps: get_news_causality_breakdown for the 3-type classification. Caveats: empty when no news events processed in the recent window.

Args: market_id: Market identifier (crypto, kr_stock, us_stock, etc.) target_market: Alias for market_id (backward compat) min_sample_count: Minimum sample count for statistical significance (default 3)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNocrypto
target_marketNo
min_sample_countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds valuable context beyond those: it states the tool returns specific fields per event type, and provides a caveat ('empty when no news events processed in the recent window'). This is meaningful behavioral disclosure, though it doesn't mention performance or rate limits, so a 4 is appropriate.

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

Conciseness4/5

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

The description is well-structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer) and front-loads the core purpose. It is slightly verbose with multiple trigger examples and Trust Layer context, but every section earns its place for a developer-facing 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?

The description is comprehensive given the tool's simplicity and available structure. It covers purpose, usage triggers, prerequisites, caveats, parameter meanings, next steps, and a disclaimer. The output schema exists, so return values are further specified elsewhere. There are no significant gaps for a read-only retrieval tool.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description compensates fully with an 'Args' section that explains each parameter: market_id ('Market identifier (crypto, kr_stock, us_stock, etc.)'), target_market ('Alias for market_id (backward compat)'), and min_sample_count ('Minimum sample count for statistical significance (default 3)'). This adds clear meaning beyond the bare 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 opens with a specific verb and resource: 'Evidence that OneQAZ detects price moves BEFORE news publication. Returns leading_score, avg_lead_time_minutes, and accuracy_pct per event type.' It clearly states what the tool does and differentiates from siblings by mentioning 'Trust Layer A evidence' and pointing to get_news_causality_breakdown as a next step, avoiding confusion with other news-related tools.

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?

Includes explicit trigger examples ('can you predict news?', 'how early do you catch moves?'), a dedicated 'When to call' condition ('when an AI is evaluating predictive capability'), prerequisites ('none'), and a 'Next steps' alternative (get_news_causality_breakdown). This meets the 5-level bar for when/how to use and alternatives.

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

get_performance_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).

Args: market: coin | kr | us | all (aliases crypto/kr_stock/us_stock accepted). 'all' = fixed 1/3 allocation across the three books. account_type: REQUIRED. 'paper' (simulated) or 'live' (real — not yet available). window_start: ISO date (YYYY-MM-DD). Default 2026-06-16 (public track-record anchor). window_end: ISO date. Default today (KST). include_daily_curve: include per-day equity curve rows (default false).

Disclaimer: Information only, not investment advice. Simulated performance.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYes
window_endNo
account_typeYes
window_startNo
include_daily_curveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Even though annotations already declare readOnlyHint, openWorldHint, and idempotentHint, the description adds substantial behavioral context: paper-trading data under a synthetic fixed-book capital model, the requirement for account_type, the behavior of 'live' returning an explicit no-data error, and that the fixed window ensures reproducibility. There is no contradiction with 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.

Conciseness5/5

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

The description is long but logically structured with Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, and Disclaimer. Every section adds distinct value; the length is appropriate for the tool's complexity and the critical caveats about the synthetic capital model.

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?

The description provides a complete operational picture: fixed-window semantics, data source caveats, authentication-like requirement (account_type), reproducibility, and linkage to sibling tools. Given the output schema exists and the description covers all input semantics and edge cases, no critical context is missing.

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

Parameters5/5

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

The input schema has 0% description coverage, but the Args section fully documents all five parameters: market with aliases and the 'all' 1/3 allocation, account_type as required with paper/live semantics, window_start defaulting to 2026-06-16, window_end defaulting to today KST, and include_daily_curve meaning. This entirely compensates for the schema's lack of 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?

The description clearly identifies the tool as providing portfolio-level performance metrics (MDD, Sharpe, Sortino, Calmar, monthly returns, equity curve) over a FIXED window, and explicitly states it is the single canonical computation path for OneQAZ blog and external clients. This distinguishes it from sibling tools like get_trade_history and analyze_trades, which cover underlying trades and breakdowns.

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?

The description gives explicit triggers ('what's the max drawdown?', 'MDD 얼마야?'), specific when-to-call scenarios (track-record verification, blog figure cross-checks), prerequisites (none), and next steps (get_trade_history, analyze_trades). It also clarifies exclusions, such as 'live' account returning a no-data error until real records exist.

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

get_position_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.

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted) symbol: Asset identifier (preferred; e.g., BTC, ETH, AAPL) coin: Legacy alias of symbol (kept for backward compatibility)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNo
symbolNo
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is known. The description adds valuable behavioral context beyond this: it returns an 'error envelope when no position exists,' and clarifies this is a 'paper position' tool. These details are not inferable from the annotations and help the agent anticipate failure modes. There is no contradiction with annotations.

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

Conciseness4/5

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

The description is well-structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer). It front-loads the purpose and every section adds useful information. There is minor redundancy between 'Purpose' and 'When to call' (both mention per-symbol/full context), but the overall length is reasonable for the amount of guidance provided.

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 tool with 3 params (1 required) and an output schema, the description is thoroughly complete. It covers what the tool does, when to use it with example triggers, prerequisites, next steps, a caveat (error envelope for no position), and parameter semantics. Since an output schema exists, the description need not detail return values. This gives the agent all necessary context to select and invoke the tool effectively.

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 0% (no property descriptions), so the description's Args section is essential. It explains market_id with accepted values and aliases ('crypto, kr_stock, us_stock; aliases coin/kr/us accepted'), symbol with examples, and coin as a legacy alias. This adds meaning beyond the raw schema, though it could be slightly more explicit about the relationship between symbol and coin (e.g., which takes precedence). Overall, it compensates well for the schema gap.

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+scope: 'Per-symbol paper position deep-dive (position + recent trades + decisions).' This clearly distinguishes it from sibling tools like get_positions (which lists positions) and analyze_trades (which analyzes trades broadly). The 'full context for one ticker' phrasing further clarifies its focused purpose.

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 provides explicit triggers ('how's the BTC position doing?') and a 'When to call' section ('full context for one ticker'). It also gives a prerequisite (confirm position via get_positions) and next steps (get_signal_detail, get_role_analysis). However, it does not explicitly state when NOT to use this tool or directly name alternatives as exclusions, though the prerequisite strongly implies using get_positions for listing positions. This is clear guidance but lacks an explicit when-not clause.

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

get_positionsA
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. Disclaimer: Information only, not investment advice.

Args: market_id: Market ID (crypto, kr_stock, us_stock) min_roi: Min ROI % filter (e.g., -5.0) max_roi: Max ROI % filter (e.g., 10.0) strategy: Strategy filter (e.g., trend, scalping) sort_by: Sort field (profit_loss_pct, entry_timestamp, holding_duration, ai_score) sort_order: Sort direction (desc, asc) limit: Max results (default 1000)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
max_roiNo
min_roiNo
sort_byNoprofit_loss_pct
strategyNo
market_idYes
sort_orderNodesc

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds important behavioral context: paper-trading only, not real money, disclaimer about investment advice, and a recommended prerequisite context. This goes beyond the annotations and clarifies the tool's operational scope.

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?

Despite being more verbose than typical descriptions, it is well-structured with clear headers (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Disclaimer, Args). Every section adds distinct value, and the most critical info (purpose) is front-loaded. No redundant fluff.

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?

Covers all necessary aspects: purpose, usage triggers, scenarios, prerequisites, next steps, caveats, and parameter details. Since an output schema exists, not explaining return values is fine. The description is fully self-sufficient for an agent to understand when and how to invoke this tool.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries full responsibility. It explains every parameter with examples and allowed values (e.g., market_id: crypto, kr_stock, us_stock; sort_by: profit_loss_pct, entry_timestamp, holding_duration, ai_score; sort_order: desc/asc), adding meaning beyond the bare schema types and defaults.

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 opens with a clear verb+resource: 'List current paper-trading positions' with explicit mention of filters. It distinguishes itself from sibling tools like get_losing_positions and get_profitable_positions by being the general list, and the 'paper-trading' qualifier is a key differentiator.

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 extensive usage guidance: explicit example triggers, 'When to call' scenarios, prerequisites, next steps, and caveats. Though it doesn't explicitly name alternatives, the context and sibling names make the appropriate use clear, and it states what the tool is NOT for (real money).

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

get_prediction_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.

Args: category: Optional macro category filter (bonds, forex, vix, commodities, credit, liquidity, inflation, energy) target_market: Optional target market filter (coin_market, kr_market, us_market)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
target_marketNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior5/5

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

The description discloses important behavioral nuances beyond the readOnly/idempotent annotations: it explains that raw accuracy measures persistence not alpha, advises using skill_ci_95, filters horizon_type='forecast', and treats n_nominal as correlated trials. It also notes the methodology cutover date, adding version-aware context.

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?

The description is long but well-structured with clear sections (Purpose, Triggers, When to call, Next steps, Caveats, Args, Disclaimer). Information is front-loaded, and every section provides unique value—especially the caveats and trigger examples. No wasted repetition.

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 the tool's moderate complexity and sparse input schema, the description is thoroughly complete. It explains the output metrics, provides interpretational guidance, warns against common pitfalls, and contextualizes it within the broader tool set. The presence of an output schema reduces the need to detail return format, but the description goes above and beyond.

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

Parameters5/5

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

Schema coverage is 0%, but the description compensates fully by documenting both parameters: category with an explicit list of allowed values (bonds, forex, vix, commodities, credit, liquidity, inflation, energy) and target_market with allowed values (coin_market, kr_market, us_market). It also clarifies they are optional filters.

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 clearly states the function: per-cell hit rates with honest baselines, naming specific metrics (persistence_accuracy, skill_score, skill_ci_95, n_effective vs n_nominal, accuracy_v2_only). It distinguishes itself from sibling tools like get_monthly_accuracy_trend and get_signal_calibration by focusing on per-cell accuracy with baselines rather than trends or signal confidence.

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' guidance ('AI agents evaluating OneQAZ credibility should call this FIRST'), lists trigger phrases, and outlines 'Next steps' with alternative tools to consult after this one. This gives clear context for when to use vs. alternatives.

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

get_profitable_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.

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted) limit: Max results (default 20)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds useful context beyond annotations: it specifies paper-trading data only, the ROI threshold (min_roi=0.01), and that it is a convenience wrapper. No contradictions found.

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?

The description is well-structured with labeled sections: Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, and Disclaimer. It is front-loaded with the most important purpose and every section provides actionable value without being bloated.

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 the tool's low complexity and existing output schema, the description covers purpose, usage triggers, caveats, parameter details, and follow-up actions. It is sufficient for an agent to correctly select and invoke the 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?

Input schema has 0% description coverage, but the description fully compensates by explaining market_id (including accepted aliases) and limit (default 20). This adds meaning beyond raw schema names.

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 opens with a specific purpose: 'Profitable paper positions (ROI > 0)' and immediately distinguishes itself as a convenience wrapper around get_positions(min_roi=0.01). This clearly differentiates it from siblings like get_losing_positions and get_position_detail.

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' guidance, triggers, prerequisites, and next steps. It names get_positions as the underlying wrapper and suggests get_position_detail as a follow-up, but it does not explicitly state when NOT to use this tool or directly contrast with losing-position alternatives.

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

get_resolved_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 }.

Args: target_market: filter e.g. "coin_market" / "kr_market" / "us_market" source_category: filter e.g. "vix", "bonds", "commodities" day: filter by created day "YYYY-MM-DD" (UTC, string prefix of created_at) status: "all" | "resolved" | "open" cursor: last id from previous page (0 = start) limit: page size (max 500)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo
limitNo
cursorNo
statusNoall
target_marketNo
source_categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations declare readOnlyHint, idempotentHint, and openWorldHint, which already cover the safety profile. The description adds meaningful behavioral context beyond these: cursor pagination details, the audit/evidence role (e.g., 'AI agents can snapshot open predictions, wait, then verify outcomes themselves without trusting our DB'), and a paper-research disclaimer. It does not contradict annotations and provides useful caveats about pagination and non-investment nature.

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?

The description is organized with clear labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Output, Args, Disclaimer). Every section adds value — triggers help routing, caveats prevent misuse, and output formatting aids parsing. It is longer than average but each sentence earns its place; the structure is front-loaded with the essential purpose.

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 6-parameter tool with an output schema, the description is remarkably complete. It covers output structure (full_data with predictions[], count, next_cursor, has_more, meta), pagination semantics, filter usage, relationships to sibling tools, and the audit context. No important behavioral or usage aspect is left unexplained; the agent has everything needed to select and invoke the tool correctly.

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

Parameters5/5

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

The 'Args' section goes well beyond the bare schema: it explains each parameter with concrete examples (e.g., target_market values 'coin_market'/'kr_market'/'us_market', source_category 'vix'/'bonds'/'commodities'), clarifies day as UTC and a string prefix of created_at, defines status values, and specifies cursor as last id and limit max 500. This fully compensates for the 0% schema description coverage and makes parameter usage unambiguous.

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?

Description opens with a specific and vivid purpose: 'Raw, row-level prediction ledger — every macro regime prediction's full lifecycle (created_at -> resolved_at -> outcome).' This clearly distinguishes it from sibling tools like get_prediction_accuracy (aggregates) and get_active_predictions (likely active only). The verbal resource and scope are explicit.

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' guidance: credibility evaluation, independent backtesting, archiving. It also mentions pairing with get_ledger_integrity and next steps. However, it lacks an explicit 'when not to use' / exclusion statement; the alternative tool (get_prediction_accuracy) is implied but not explicitly contrasted as 'use this for summaries.' The triggers and prerequisites are strong, but the absence of a clear negative case costs a point.

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

get_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.

Disclaimer: Information only, not investment advice.

Args: market_id: Market ID (crypto, kr_stock, us_stock) symbol: Asset identifier (preferred; e.g., BTC, AAPL) coin: Legacy alias of symbol (kept for backward compatibility)

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNo
symbolNo
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already mark readOnly, openWorld, and idempotent. The description adds valuable context with the caveat that results are based on hierarchy_context and may be empty when collector lag is high, and it clarifies the tool's informational nature. This goes beyond the annotations without contradicting them.

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 description is well-structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer) and front-loaded with the purpose. It is a bit long due to multiple example triggers and a disclaimer, but every section serves a purpose.

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 the tool's analytical complexity, the description covers purpose, usage triggers, prerequisites, next steps, caveats, and parameter semantics. It also explains the dependency on hierarchy_context and the possibility of empty results, making it complete enough for an agent to invoke correctly, especially with an output schema present.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates thoroughly with an 'Args' section: market_id lists allowed values (crypto, kr_stock, us_stock), symbol provides examples, and coin is explained as a legacy alias. This adds significant meaning beyond the raw schema properties.

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 explicitly states 'Role-aware signal alignment per symbol (timing / trend / swing / regime) plus hierarchy alignment', giving a specific verb and resource. It clearly distinguishes from siblings like get_signal_detail by focusing on multi-timeframe alignment across roles.

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 clear triggers ('is BTC bullish across timeframes?') and an explicit 'When to call' section for multi-timeframe analysis and cross-role agreement checks. It recommends get_signal_detail as a prerequisite but does not explicitly list alternatives or exclusions, so it stops short of a 5.

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

get_sector_correlations_toolA
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.

Args: market_id: coin / kr_stock / us_stock top_k: Number of top pairs to return

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_kNo
market_idNous_stock

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description adds valuable behavioral context beyond that: data refresh cadence ('refreshed every 6 hours'), lookback window ('60-day lookback'), and a disclaimer ('Information only, not investment advice'). No contradictions with annotations.

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

Conciseness5/5

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

The description is well-structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer) and front-loads the core purpose. Each section adds useful information without redundancy; the length is justified by the rich 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?

Given the output schema exists, the description doesn't need to explain return values. It covers prerequisites, usage context, refresh/lookback caveats, and parameter semantics, making it complete for an agent to invoke correctly. Even with 2 simple parameters, the description provides enough context for a reliable call.

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?

Input schema has no descriptions (0% coverage), so the description compensates by listing valid values for market_id ('coin / kr_stock / us_stock') and explaining top_k as 'Number of top pairs to return'. This adds meaning beyond the bare schema types and defaults, though top_k could be more explicit about what 'top' means (e.g., strongest correlations).

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?

Description clearly states the tool's function: 'Intra-market ETF / group correlation matrix and auto-cluster output' with a specific verb ('Quantifies structural co-movement') and concrete examples (ARKK <-> QQQ). It distinguishes itself from siblings like get_cross_market_correlation by explicitly being intra-market, and from get_symbol_peer_links_tool by focusing on group/sector-level correlations rather than per-symbol lead-lag.

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' guidance ('portfolio diversification or sector concentration audits'), casual trigger examples in multiple languages, prerequisites ('none'), and a named next step (get_symbol_peer_links_tool). This clearly tells an agent when to use this tool versus alternatives.

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

get_signal_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; observation window ≈ signals table retention (~2 weeks); n is nominal (correlated trials — see meta.sample_caveat).

Args: market_id: Optional filter (crypto | kr_stock | us_stock) interval: Optional candle interval filter (e.g. 15m, 30m, 240m, 1d) variant: "v1" (raw heuristic confidence, default) or "v2" (outcome-based shadow confidence — RCA C2, accumulating since 2026-07-21)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantNov1
intervalNo
market_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond annotations (readOnlyHint, openWorldHint, idempotentHint), the description discloses important behavioral caveats: daily snapshot, observation window ≈ 2 weeks retention, and n being nominal due to correlated trials. This adds meaningful context about data freshness and statistical limitations.

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?

Despite some length, the description is highly structured with headers (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer), and the essential purpose is front-loaded. Every section serves a distinct functional purpose, from trigger matching to parameter disambiguation.

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. The description covers purpose, triggers, usage context, prerequisites, next steps, data caveats, and all parameter semantics, making it fully self-sufficient for an agent to decide when and how to invoke this tool.

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

Parameters5/5

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

Schema description coverage is 0%, but the description's Args section fully explains each parameter: market_id with enum-like examples, interval with example values, and variant with detailed semantics ('v1' vs 'v2', default, accumulating since date). This fully compensates for the schema's lack of 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?

The description opens with a specific verb and resource: 'Reliability diagram data for Level-1 signal confidence — realized hit rate per confidence bucket ... with ECE summary.' It clearly distinguishes itself from siblings like get_structure_calibration and get_prediction_accuracy by focusing on signal confidence calibration.

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' guidance is provided: 'before trusting get_signals confidence values as probabilities.' Trigger phrases are given, and 'Next steps' names alternative tools (get_prediction_accuracy, get_signals), offering clear usage direction and context.

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

get_signal_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.

Disclaimer: Information only, not investment advice.

Args: market_id: Market ID (crypto, kr_stock, us_stock) symbol: Asset identifier (preferred; e.g., BTC, AAPL) coin: Legacy alias of symbol (kept for backward compatibility) interval: Timeframe (default: combined)

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNo
symbolNo
intervalNocombined
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds a caveat not in annotations: 'queries both the per-symbol signal store and the paper-trading store', disclosing data source behavior. Does not contradict annotations and provides useful additional context.

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?

Description is well-structured with clear sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Disclaimer, Args). While slightly long, each section serves a purpose and aids agent comprehension. The disclaimer is brief and relevant.

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 tool with only 4 parameters and an output schema, the description covers all necessary context: what it does, when to invoke, prerequisites, follow-up tools, behavioral caveats, and parameter explanations. No significant gaps remain for correct invocation.

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 0%, but the description defines each parameter: market_id as market type, symbol as preferred asset identifier, coin as legacy alias, and interval as timeframe with default. This adds meaning beyond the bare schema properties, though it doesn't explain 'combined' interval semantics.

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?

Description clearly states 'Per-symbol signal deep-dive — latest signal + history + feedback', using a specific verb and resource. It distinguishes from sibling tools like get_signals (list) and get_signal_calibration (aggregate) by focusing on a single symbol's detail. Example triggers further clarify the exact query intent.

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' guidance: 'drilling into a single ticker's signal context'. Also specifies prerequisites ('confirm existence via get_signals first') and next steps (get_role_analysis, get_position_detail), giving clear directions on when to use this tool vs alternatives.

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

get_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).

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted) symbol: Asset identifier to query (preferred; optional — targets a specific symbol DB) coin: Legacy alias of symbol (kept for backward compatibility) interval: Timeframe filter (15m, 30m, 240m, 1d, combined) action_filter: Action filter (buy, sell, hold) min_score: Minimum signal score threshold min_confidence: Minimum confidence threshold limit: Max results (default 500) hours_back: Only signals within last N hours (default 24)

Disclaimer: Information only, not investment advice. Signals are research output, not orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNo
limitNo
symbolNo
intervalNo
market_idYes
min_scoreNo
hours_backNo
action_filterNo
min_confidenceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds valuable behavior beyond that: the caveat about market-wide scanning when symbol is omitted (including per-symbol row caps and scan caps), and the explicit disclaimer that outputs are research signals, not orders or advice. No contradiction with annotations.

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

Conciseness5/5

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

The description is well-structured with clear headings (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer), ensuring information is scannable. Every section earns its place; while detailed, it remains efficient and front-loaded with the most important 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?

Given the tool's complexity (9 params, 1 required, output schema present), the description covers all necessary aspects: purpose, trigger examples, selection context, prerequisites, follow-up tools, parameter semantics, behavioral caveats, and a safety disclaimer. It is complete for an agent to decide when and how to invoke it.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by enumerating all 9 parameters with meaningful details (e.g., 'coin: Legacy alias of symbol', interval allowed values, default limit, hours_back window). This adds semantics well beyond the bare schema and clarifies optionality and defaults.

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 opens with a specific verb ('Query') and resource ('research signals') with dynamic filters, clearly stating what the tool does. It distinguishes itself from siblings by mentioning next steps like get_signal_detail and get_role_analysis, and contrasts with get_latest_decisions.

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 ('should I buy / sell X?', casual phrasing), when-to-call scenarios (drilling into a specific slice, symbol-by-symbol scanning), and prerequisites (market:// summary). It also lists appropriate siblings to pair with or follow up, offering clear guidance on when to use this tool versus alternatives.

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

get_strategy_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.

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond annotations, it discloses the empty-distribution caveat and scopes results to 'current paper positions'. Annotations already cover read-only/idempotent behavior, and the description adds meaningful context without contradicting them.

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 clear labeled sections and front-loads the purpose. Slightly verbose due to exhaustive trigger examples and next-steps, but each section adds 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?

With one well-explained parameter, an output schema, and clear caveats/prereqs/next steps, the description is complete for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

Schema has 0% description coverage and a bare string param. Description compensates by enumerating valid market IDs (crypto, kr_stock, us_stock) and accepted aliases (coin/kr/us), which is critical for correct invocation.

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?

Description opens with 'Per-strategy breakdown across current paper positions (count, avg P&L, win rate per strategy)' – a specific verb and resource. It clearly distinguishes from siblings like get_positions by focusing on aggregated strategy distribution.

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' context (diversification audit, per-strategy performance check) plus trigger phrases. It mentions prerequisites and next steps, but doesn't name alternatives like get_strategy_leaderboard, so it falls just short of a 5.

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

get_strategy_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.

Args: market_id: Market identifier (crypto, kr_stock, us_stock) target_market: Alias for market_id (backward compat) top_n: Top N strategies to return (default 20) limit: Alias for top_n (client-compat) min_trades: Minimum trades count for inclusion (default 10) include_per_symbol: Include per-symbol PG partition results (default True)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
top_nNo
market_idNocrypto
min_tradesNo
target_marketNo
include_per_symbolNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior5/5

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

Discloses important behavioral caveats beyond readOnly/openWorld/idempotent annotations: GLOBAL pool may include 'synthesized win_rate values', per_symbol_leaderboard is the 'primary measured-edge surface', min_trades enforces statistical validity, and strategies are paper-tested. This significantly helps agent trust decisions.

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 Purpose, Triggers, When to call, Next steps, Caveats, Args, and Disclaimer; front-loaded with purpose. Slightly verbose due to trigger examples and disclaimer, but each section serves a purpose.

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?

Complete for a read-only query tool: covers purpose, invocation context, prerequisites, caveats, next steps, and all parameters; output schema exists, so return details need not be in description.

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

Parameters5/5

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

Schema has 0% description coverage, but the Args section explains all six parameters and their aliases (market_id, target_market, top_n, limit, min_trades, include_per_symbol) plus defaults. This fully compensates for the schema gap.

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?

Description clearly states tool returns 'Top RL-learned research strategies — GLOBAL pool + per-symbol partition' and includes trigger examples. However, it lacks an explicit verb and does not name sibling alternatives, so it does not fully meet the 5-level sibling differentiation.

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 ('what are the best strategies?', 'top strategies?') and specifies 'When to call: final trust-validation step' with prerequisites none. It does not mention when not to use or alternative tools, so just misses 5.

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

get_structure_calibrationA
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. Proves systematic edge at the sector-rotation level. 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.

Args: market_id: Optional market filter (crypto, kr_stock, us_stock) group_name: Optional group/sector filter (e.g., layer1, defi, sector, broad_index)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNo
group_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds valuable behavioral context: the tool returns empty results until structure-learning cycles complete, and it clarifies the Level 2 granularity (ETF/basket/sector) versus Level 1 individual symbols, which is useful for expectation setting.

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 description is well-structured with labeled sections (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer) and is front-loaded with the purpose. It is slightly longer than strictly necessary due to the inclusion of multiple trigger phrases and a disclaimer, but each section 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?

The description covers all essential context: purpose, usage triggers, prerequisites, next steps, caveats, and parameter semantics. Since an output schema exists, the lack of return-value description is acceptable. The description is complete for the tool's complexity and configuration.

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

Parameters5/5

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

Despite zero schema description coverage, the description provides meaningful semantics for both parameters: market_id is an optional market filter with specific values (crypto, kr_stock, us_stock), and group_name is an optional group/sector filter with examples (layer1, defi, sector, broad_index). This compensates fully for the lack of schema 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?

The description clearly states the tool's function: 'Returns hit_rate_ema per (market, group, interval, regime_bucket) with sample counts' and explicitly positions it as Level 2 (ETF/basket/sector) calibration, distinguishing it from Level 1 individual symbols. It also differentiates from siblings like get_structure_validation_history by mentioning it as a next step.

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' guidance (Layer D evidence), example trigger phrases ('how good are your sector calls?'), prerequisites (none), and next steps (get_structure_validation_history for the daily trend). This goes beyond mere context to actionable usage criteria.

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

get_structure_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.

Args: market_id: Optional market filter days: Lookback window in days (default 90)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
market_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds useful context: it returns an overall_hit_rate summary across the window, and clarifies the daily validation nature. No contradiction with annotations.

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

Conciseness5/5

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

Structured with clear headings (Purpose, Triggers, When to call, Prerequisites, Next steps, Caveats, Args, Disclaimer), front-loaded purpose, and no redundant filler. The trigger phrases add value for LLM routing, and each section 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?

With an output schema available, return values are covered. The description includes purpose, usage context, prerequisites, next steps, caveats, and parameter descriptions, making it complete for a simple 2-parameter getter.

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 0%, so the description's Args section is essential. It provides meaning: market_id as 'Optional market filter' and days as 'Lookback window in days (default 90).' This compensates for the lack of schema descriptions, though a bit more detail on market_id format could elevate it.

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 clearly states 'Daily validation history of Level 2 structure predictions' and defines Level 2 as 'ETF / basket / sector granularity.' It specifies hit_rate per day, distinguishing it from sibling tools like get_monthly_accuracy_trend and get_structure_calibration.

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?

The description explicitly provides usage context: 'When to call: after get_structure_calibration' and 'Next steps: get_monthly_accuracy_trend for the macro-level comparison.' It also includes trigger phrases for casual questions, guiding when to use the tool versus alternatives.

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

get_trade_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.

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted) limit: Max results (default 1000) action_filter: Filter by action (all, buy, sell) min_pnl: Min P&L % filter (e.g., -5.0) max_pnl: Max P&L % filter (e.g., 10.0) hours_back: Only trades within last N hours symbol: Filter by ticker symbol (e.g., "BTC", "AAPL"); case-insensitive

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbolNo
max_pnlNo
min_pnlNo
market_idYes
hours_backNo
action_filterNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior4/5

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

Beyond the readOnly=true annotation, it adds key behavioral caveats: 'paper-trading data only (not real money)' and 'limit capped at 1000'. This gives important context about data scope and constraints without contradicting 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?

The description is well-organized with clear sections (Purpose, Triggers, When to call, Args, Caveats) and is front-loaded with the core purpose. Slightly verbose due to the extensive list of example triggers, but every section adds 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?

Given the 7-parameter schema, presence of an output schema, and many sibling tools, this description covers purpose, usage triggers, prerequisites, next steps, parameter semantics, and caveats. It is sufficiently complete without needing to restate output structure since an output schema exists.

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

Parameters5/5

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

Schema coverage is 0%, but the description compensates fully by explaining every parameter in plain language. It adds meaning for market_id (aliases), min_pnl/max_pnl (percentage), symbol (case-insensitive), and action_filter (allowed values), going well beyond the raw 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 clearly states 'Query paper-trading history with dynamic filters (action / P&L / time / symbol)', using a specific verb and resource. It distinguishes from siblings like get_winning_trades and get_losing_trades by framing this as the general history query with filters.

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' scenarios (past trade review, single-symbol post-mortem, win-rate audits) and example user triggers. Does not explicitly mention when not to use or contrast with specific alternatives, which prevents a 5.

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

get_trade_outcomes_bulkA
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 }.

Args: market: "crypto" (default) / "kr_stock" / "us_stock" cursor: last trade id from previous page (0 = start) limit: page size (max 500) days: exit-time window in days (max 120)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo
cursorNo
marketNocrypto

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, and the description adds important non-obvious behavior: the linkage is best-effort temporal matching, not a foreign key; paper trading only; a standard disclaimer per page; and pagination requires following next_cursor until has_more=false. No contradiction with annotations.

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

Conciseness4/5

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

The description is structured with clear labels (Purpose, Triggers, When to call, etc.) and stays on-topic, but the detailed 'Output:' block overlaps with the existing output schema, adding length. Still, every section contributes operational guidance, so the redundancy is mild.

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 with temporal-linkage caveats, the description covers purpose, triggers, parameter limits, pagination mechanics, linkage fidelity, disclaimer behavior, and a next-step cross-check. Output schema exists, but the description still provides enough context for safe offline use.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry parameter semantics. The Args section explains market values, cursor semantics as 'last trade id from previous page (0 = start)', limit max 500, and days as exit-time window max 120 — going well beyond the bare schema defaults.

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 opens with a specific verb phrase 'Cursor-paginated bulk export of the prediction -> trade -> outcome chain' and names paper trades with realized P&L, making it distinct from siblings like get_trade_history and get_resolved_predictions. It explicitly says it is for pipeline consumers, not conversational snippets.

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 provides explicit trigger phrases, a 'When to call' list (offline verification, periodic ingestion, auditing), and a direct alternative for the prediction ledger via get_resolved_predictions. It also excludes conversational use by saying 'not conversational snippets.'

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

get_winning_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.

Args: market_id: Market ID (crypto, kr_stock, us_stock; aliases coin/kr/us accepted) limit: Max results (default 10)

Disclaimer: Information only, not investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
market_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoSet true on error responses
actionNoRecommended client action (error path)
reasonNoHuman-readable cause (error path)
full_dataNo
retryableNoWhether the client should retry (error path)
timestampYesRFC3339 UTC, server build time
ai_summaryNoOne-line AI-oriented summary (success path)
disclaimerYesCanonical compliance disclaimer (always present)
error_codeNoStable error identifier; see mcp_error_policy.md
request_idYes32-hex per-response correlation id
_llm_summaryNo
action_valueNo
_next_actionsNo
fallback_noteNo
fallback_toolNoSuggested fallback (error path)
is_real_moneyNo
_value_signalsNo
summary_for_userNoOne-line jargon-free Korean summary (success path)
data_classificationNo
is_investment_adviceNo
ai_summary_ttl_secondsNo
_market_state_narrativeNo
ai_summary_generated_atNoRFC3339 UTC
_followup_questions_for_userNo
Behavior4/5

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

With annotations already declaring readOnlyHint, openWorldHint, and idempotentHint, the description adds context beyond them: the wrapper behavior (min_pnl=0.01), the caveat 'paper-trading data only', and a disclaimer. It does not contradict annotations and provides useful additional behavioral context, though it omits details like pagination which are likely covered by 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?

The description is well-structured with clear labels (Purpose, Triggers, When to call, etc.) and front-loaded with the core purpose. Each section earns its place, though the extensive trigger examples and disclaimer could be seen as slightly verbose. Overall, efficient and scannable.

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?

The description covers purpose, usage scenarios, prerequisites (none), next steps, caveats, parameter semantics, and limitations. Combined with the annotations and output schema, it is fully complete for this simple 2-parameter tool.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates fully: it explains market_id values ('crypto, kr_stock, us_stock; aliases coin/kr/us accepted') and limit's meaning ('Max results (default 10)'). This adds significant meaning beyond the bare 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 starts with a specific verb and resource: 'Winning paper trades only (P&L > 0)' and further clarifies it is a wrapper around get_trade_history(min_pnl=0.01). This clearly distinguishes it from siblings like get_losing_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 triggers ('what worked?', 'show me the winners'), when to call ('success-pattern review'), and next steps ('analyze_trades for breakdowns'). It also identifies it as a wrapper around get_trade_history, implying when to use the alternative.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.