Skip to main content
Glama

OneQAZ Trading Intelligence

Structure Calibration (Level 2)

get_structure_calibration
Read-onlyIdempotent

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

Input Schema

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

Output Schema

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  2. Changed2 schema fields changed
    • addedOutput schema / properties
      Added value: +{
      +  "data_classification": {
      +    "anyOf": [
      +      {
      +        "const": "research_information_only",
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "disclaimer": {
      +    "description": "Canonical compliance disclaimer (always present)",
      +    "type": "string"
      +  },
      +  "full_data": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": true,
      +        "description": "`full_data` for get_structure_calibration — 실응답에서 추출(2026-09-23).",
      +        "properties": {
      +          "baseline": {
      +            "additionalProperties": true,
      +            "type": "object"
      +          },
      +          "calibration": {
      +            "items": {},
      +            "type": "array"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null
      +          },
      +          "meta": {
      +            "additionalProperties": true,
      +            "type": "object"
      +          },
      +          "returned": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null
      +          },
      +          "total_available": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null
      +          },
      +          "truncated": {
      +            "anyOf": [
      +              {
      +                "type": "boolean"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null
      +          },
      +          "truncated_note": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null
      +          }
      +        },
      +        "type": "object"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "is_investment_advice": {
      +    "anyOf": [
      +      {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "is_real_money": {
      +    "anyOf": [
      +      {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "request_id": {
      +    "description": "32-hex per-response correlation id",
      +    "type": "string"
      +  },
      +  "timestamp": {
      +    "description": "RFC3339 UTC, server build time",
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "disclaimer",
      +  "request_id",
      +  "timestamp"
      +]
  3. Changed7 schema fields changed
    • addedInput schema / properties / group_name / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / group_name / description
      Added value: +"Optional group/sector filter (e.g., layer1, defi, sector, broad_index)"
    • removedInput schema / properties / group_name / type
      Removed value: -"string"
    • addedInput schema / properties / market_id / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / market_id / description
      Added value: +"Optional market filter (crypto, kr_stock, us_stock). Aliases coin/kr/us and any letter case are accepted."
    • addedInput schema / properties / market_id / enum
      Added value: +[
      +  "crypto",
      +  "kr_stock",
      +  "us_stock"
      +]
    • removedInput schema / properties / market_id / type
      Removed value: -"string"
  4. Changed1 schema field changed
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 50,
      +  "description": "Max results (default 50, max 500). Rows are truncated; see `total_available` and `truncated` in the response. `baseline` and `meta` counts stay whole-set.",
      +  "type": "integer"
      +}
  5. First observed

TDQS

A4.6/5.0
Behavior4/5

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

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

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

Conciseness4/5

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

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

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

Completeness5/5

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

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

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description earns extra by clarifying the truncation semantics that govern `limit` — rows get truncated while `baseline`, `meta.total_entries` and `meta.total_samples` stay whole-set, and dimension keys are never hoisted out of rows. That is meaning beyond the per-field schema text.

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

Purpose5/5

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

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

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

Usage Guidelines5/5

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

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

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.