Skip to main content
Glama

DAMO Market State

Get DAMO market state

get_market_state
Read-onlyIdempotent

Use when the user asks about the current market state (trend or momentum) of a crypto asset on any timeframe from 1 minute to 1 month. Returns state data only: no prices, forecasts or trade signals. Current DAMO market state of one symbol across 10 timeframes: state name and permanent code per timeframe, plus a 10-value vector in fixed timeframe order. as_of is when DAMO last wrote the record; each timeframe's candle close is in states[tf].candle_close (live: candle_close_expected).

Input Schema

NameRequiredDescriptionDefault
layerNoverified = closed candles (recorded, never changed); live = forming candles (provisional)verified
proofNoAlso put DAMO's Ed25519 signature in the result body as 'proof'.
formatNocompact = symbol, layer, time, vector, short citation and remaining quota only. full = per-timeframe state, seq, hash and engine version (for citing and checking).full
symbolYesTicker, e.g. BTCUSDT. BTC, btc, BTC/USDT, BTC-PERP and coin names like Bitcoin are also accepted. Not a sentence: on a wrong symbol the error lists did_you_mean.
timeframesNoOptional. Only these timeframes are returned and counted against the quota (case-sensitive: 1m = minute, 1M = month). Omit for all 10.

Output Schema

NameRequiredDescriptionDefault
as_ofNoverified: when DAMO last wrote this record (UTC). Each timeframe's own close time is states[tf].candle_close
layerYes
proofNoEd25519 signature when proof=true
quotaNo
staleNo
statesNofull format: per-timeframe state, code, candle status and record fields
symbolYes
vectorYesState codes in timeframe order (1 bull_momentum, 2 weakening, 3 bear_momentum, 4 recovery); null = not requested or not available
citationYes
chain_headNo
observed_atNolive: when DAMO observed the forming candles (UTC)
vector_orderNo
engine_versionNo
quota_remainingNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / symbol / description
      Previous value: -"Symbol, e.g. BTCUSDT (Binance USDⓈ-M perpetual naming)"New value: +"Ticker, e.g. BTCUSDT. BTC, btc, BTC/USDT, BTC-PERP and coin names like Bitcoin are also accepted. Not a sentence: on a wrong symbol the error lists did_you_mean."
    • addedInput schema / properties / symbol / maxLength
      Added value: +40
  2. Changed2 schema fields changed
    • changedOutput schema / properties / as_of / description
      Previous value: -"verified: time of the latest closed candle (UTC)"New value: +"verified: when DAMO last wrote this record (UTC). Each timeframe's own close time is states[tf].candle_close"
    • changedOutput schema / properties / observed_at / description
      Previous value: -"live: observation time (UTC)"New value: +"live: when DAMO observed the forming candles (UTC)"
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "as_of": {
      +      "description": "verified: time of the latest closed candle (UTC)",
      +      "type": "string"
      +    },
      +    "chain_head": {
      +      "type": "object"
      +    },
      +    "citation": {
      +      "type": "string"
      +    },
      +    "engine_version": {
      +      "type": "string"
      +    },
      +    "layer": {
      +      "enum": [
      +        "verified",
      +        "live"
      +      ],
      +      "type": "string"
      +    },
      +    "observed_at": {
      +      "description": "live: observation time (UTC)",
      +      "type": "string"
      +    },
      +    "proof": {
      +      "description": "Ed25519 signature when proof=true",
      +      "type": "object"
      +    },
      +    "quota": {
      +      "type": "object"
      +    },
      +    "quota_remaining": {
      +      "type": "integer"
      +    },
      +    "stale": {
      +      "type": "boolean"
      +    },
      +    "states": {
      +      "additionalProperties": {
      +        "type": "object"
      +      },
      +      "description": "full format: per-timeframe state, code, candle status and record fields",
      +      "type": "object"
      +    },
      +    "symbol": {
      +      "type": "string"
      +    },
      +    "vector": {
      +      "description": "State codes in timeframe order (1 bull_momentum, 2 weakening, 3 bear_momentum, 4 recovery); null = not requested or not available",
      +      "items": {
      +        "maximum": 4,
      +        "minimum": 1,
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "type": "array"
      +    },
      +    "vector_order": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "symbol",
      +    "layer",
      +    "vector",
      +    "citation"
      +  ],
      +  "type": "object"
      +}
  4. Changed2 schema fields changed
    • addedInput schema / properties / format
      Added value: +{
      +  "default": "full",
      +  "description": "compact = symbol, layer, time, vector, short citation and remaining quota only. full = per-timeframe state, seq, hash and engine version (for citing and checking).",
      +  "enum": [
      +    "full",
      +    "compact"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / proof
      Added value: +{
      +  "default": false,
      +  "description": "Also put DAMO's Ed25519 signature in the result body as 'proof'.",
      +  "type": "boolean"
      +}
  5. Changed1 schema field changed
    • addedInput schema / properties / timeframes
      Added value: +{
      +  "description": "Optional. Only these timeframes are returned and counted against the quota (case-sensitive: 1m = minute, 1M = month). Omit for all 10.",
      +  "items": {
      +    "enum": [
      +      "1m",
      +      "5m",
      +      "15m",
      +      "1h",
      +      "4h",
      +      "12h",
      +      "1d",
      +      "3d",
      +      "1w",
      +      "1M"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array",
      +  "uniqueItems": true
      +}
  6. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish this as a safe, idempotent read, and the description adds real behavioral context that goes beyond them: verified candles are recorded and never change, live candles are provisional, and the record carries DAMO's write timestamp. It does not discuss quota or error behavior in depth (though the schema notes did_you_mean on bad symbols), which keeps it just under a 5.

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

Conciseness5/5

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

Front-loaded with the triggering condition, then a scope disclaimer, then return-shape details, in three tight sentences with no filler. Each sentence carries distinct information: when to use, what it does not return, and how to interpret the payload.

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

Completeness4/5

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

With an output schema present and 100% parameter coverage, the description covers the remaining ambiguity: verified vs live semantics, timestamp meaning, and vector ordering. The main remaining gap is that it does not route the agent to the sibling tools for multi-symbol or definition lookups.

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

Parameters4/5

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

Schema coverage is 100%, so a baseline of 3 applies, but the description adds meaning beyond the schema: it explains that as_of is DAMO's write time and that live-layer candles expose candle_close_expected while verified uses states[tf].candle_close. It also clarifies the fixed timeframe ordering of the returned vector, which the schema cannot express.

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

Purpose4/5

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

States a specific verb and resource: returns the current DAMO market state of one symbol across 10 timeframes, with an explicit scope disclaimer ('state data only: no prices, forecasts or trade signals'). The 'one symbol' phrasing implicitly separates it from the plural sibling get_market_states, but that sibling is never named, so differentiation is left to inference.

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?

'Use when the user asks about the current market state (trend or momentum) of a crypto asset on any timeframe from 1 minute to 1 month' gives a clear trigger condition and acceptable timeframe range. No exclusions or named alternatives (e.g. when to prefer get_market_states or get_state_definitions) are provided.

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.

Resources