Skip to main content
Glama
gtorreal
by gtorreal

buda-mcp

npm version License: MIT Node.js >=18

Buda.com을 위한 MCP 서버입니다. Buda.com은 칠레, 콜롬비아, 페루의 주요 암호화폐 거래소입니다. MCP 호환 AI 어시스턴트가 시장 데이터, 호가창, 거래 내역, 스프레드, 기술적 지표 및 가격 시뮬레이션에 실시간으로 접근할 수 있게 해주며, 계정이나 API 키가 필요하지 않습니다.


빠른 시작

npx @guiie/buda-mcp

또는 영구적으로 설치하려면:

npm install -g @guiie/buda-mcp
buda-mcp

Related MCP server: market-data-mcp

MCP 클라이언트에 설치

Claude Code

claude mcp add buda-mcp -- npx -y @guiie/buda-mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "buda-mcp": {
      "command": "npx",
      "args": ["-y", "@guiie/buda-mcp"]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "buda-mcp": {
      "command": "npx",
      "args": ["-y", "@guiie/buda-mcp"]
    }
  }
}

도구

모든 도구는 공개되어 있으며 API 키나 계정이 필요하지 않습니다.

get_market_summary ⭐ 여기서 시작하세요

한 번의 호출로 요약 정보 제공: 최종 가격, 매수/매도 호가, 스프레드 %, 24시간 거래량, 가격 변동 및 liquidity_rating(high / medium / low). 사용자가 특정 시장에 대해 질문할 때 가장 먼저 사용하기 좋은 도구입니다.

매개변수

유형

필수

설명

market_id

string

예

시장 ID (예: BTC-CLP).


get_markets

Buda.com의 모든 거래 쌍을 나열하거나 특정 시장에 대한 세부 정보(수수료, 최소 주문 규모, 할인 등급)를 가져옵니다.

매개변수

유형

필수

설명

market_id

string

아니오

시장 ID (예: BTC-CLP). 생략 시 모든 시장을 나열합니다.


get_ticker

현재 스냅샷: 최종 가격, 최적 매수/매도 호가, 24시간 거래량, 24시간 및 7일 가격 변동.

매개변수

유형

필수

설명

market_id

string

예

시장 ID (예: BTC-CLP, ETH-COP).


get_orderbook

현재 호가창: {price, amount} 객체로 정렬된 매수 및 매도 호가.

매개변수

유형

필수

설명

market_id

string

예

시장 ID.

limit

number

아니오

측면당 최대 가격 레벨 (기본값: 전체).


get_trades

최근 거래 내역을 유형화된 객체로 제공: {timestamp_ms, amount, price, direction}.

매개변수

유형

필수

설명

market_id

string

예

시장 ID.

limit

number

아니오

거래 수 (기본값 50, 최대 100).

timestamp

number

아니오

Unix 초 단위 — 이보다 오래된 거래를 반환합니다 (페이지네이션).


get_market_volume

측면별(매수 = 구매, 매도 = 판매) 24시간 및 7일 거래량.

매개변수

유형

필수

설명

market_id

string

예

시장 ID.


get_spread

매수/매도 스프레드: 절대값 및 매도 가격 대비 백분율.

매개변수

유형

필수

설명

market_id

string

예

시장 ID.


compare_markets

모든 견적 통화에 걸쳐 주어진 기준 통화의 모든 쌍에 대한 나란히 비교 티커 데이터.

매개변수

유형

필수

설명

base_currency

string

예

기준 통화 (예: BTC, ETH).


get_price_history

원시 거래 내역에서 집계된 OHLCV 캔들 (Buda는 기본 캔들스틱 엔드포인트가 없음). 5m, 15m, 30m, 1h, 4h, 1d 주기를 지원합니다.

매개변수

유형

필수

설명

market_id

string

예

시장 ID.

period

string

아니오

5m / 15m / 30m / 1h / 4h / 1d (기본값 1h).

limit

number

아니오

집계 전 가져올 원시 거래 수 (기본값 100, 최대 1000).


get_arbitrage_opportunities

USDC로 정규화된 Buda의 CLP, COP, PEN 시장 전반에 걸친 자산의 국가 간 가격 차이를 탐지합니다.

매개변수

유형

필수

설명

base_currency

string

예

예: BTC.

threshold_pct

number

아니오

보고할 최소 차이 (기본값 0.5).


simulate_order

실시간 티커 데이터를 사용하여 매수 또는 매도 주문을 시뮬레이션합니다. 실제 주문은 실행되지 않습니다. estimated_fill_price, fee_amount, total_cost, slippage_vs_mid_pct를 반환합니다. 모든 응답에는 simulation: true가 포함됩니다.

매개변수

유형

필수

설명

market_id

string

예

시장 ID.

side

buy / sell

예

주문 측면.

amount

number

예

기준 통화 단위의 주문 규모.

price

number

아니오

시장가 주문 시뮬레이션 시 생략.


calculate_position_size

자본, 위험 %, 진입가, 손절가를 기반으로 한 켈리 방식의 포지션 규모 계산. 완전히 클라이언트 측에서 수행되며 API 호출이 없습니다.

매개변수

유형

필수

설명

market_id

string

예

시장 ID (참고용).

capital

number

예

규모를 산정할 총 자본.

risk_pct

number

예

위험을 감수할 자본의 % (0.1–10).

entry_price

number

예

진입 가격.

stop_loss_price

number

예

손절 가격.


get_market_sentiment

세 가지 구성 요소에서 도출된 복합 심리 점수(-100 ~ +100): 24시간 가격 변동(40%), 7일 평균 대비 거래량(35%), 시장 유형 기준 대비 스프레드(25%). score, label, component_breakdown 및 disclaimer를 반환합니다.

매개변수

유형

필수

설명

market_id

string

예

시장 ID.


get_technical_indicators

RSI (14), MACD (12/26/9), 볼린저 밴드 (20, 2σ), SMA 20, SMA 50 — Buda 거래 내역에서 서버 측에서 계산됨 (외부 라이브러리 없음). 신호 해석과 20개 미만의 캔들을 사용할 수 있는 경우 구조화된 경고를 반환합니다. disclaimer 포함.

매개변수

유형

필수

설명

market_id

string

예

시장 ID.

period

string

아니오

1h / 4h / 1d (기본값 1h).

limit

number

아니오

가져올 원시 거래 수 (500–1000).


get_real_quotation

주문을 실행하지 않고 주어진 주문 금액과 방향에 대한 실시간 견적을 반환하며, 정확한 체결 가격, 수수료 및 잔액 변화를 보여줍니다.

매개변수

유형

필수

설명

market_id

string

예

시장 ID.

type

Bid / Ask

예

주문 측면.

amount

number

예

기준 통화 단위의 주문 규모.

limit_price

number

아니오

지정가 견적을 위한 지정가.


get_available_banks

주어진 통화 국가에서 법정 화폐 입출금이 가능한 은행 목록을 나열합니다.

매개변수

유형

필수

설명

currency

string

예

법정 화폐 코드 (예: CLP, COP, PEN).


MCP 리소스

도구 외에도 서버는 클라이언트가 직접 읽을 수 있는 MCP 리소스를 노출합니다:

URI

설명

buda://markets

모든 Buda.com 시장의 JSON 목록

buda://ticker/{market}

특정 시장의 JSON 티커 (예: buda://ticker/BTC-CLP)

buda://summary/{market}

유동성 등급이 포함된 전체 시장 요약 (예: buda://summary/BTC-CLP)


지원되는 시장

견적

국가

샘플 쌍

CLP

칠레

BTC-CLP, ETH-CLP, SOL-CLP

COP

콜롬비아

BTC-COP, ETH-COP, SOL-COP

PEN

페루

BTC-PEN, ETH-PEN

USDC

USD 고정

BTC-USDC, USDT-USDC

BTC

교차

ETH-BTC, LTC-BTC, BCH-BTC


소스에서 빌드

git clone https://github.com/gtorreal/buda-mcp.git
cd buda-mcp
npm install
npm run build
node dist/index.js        # stdio (for MCP clients)
node dist/http.js         # HTTP on port 3000 (for Railway / hosted)

테스트 실행:

npm run test:unit        # 100 unit tests, no network required
npm run test:integration # live API tests (skips if unreachable)
npm test                 # both

HTTP / Railway 배포

dist/http.js 진입점은 다음을 포함하는 Express 서버를 실행합니다:

  • POST /mcp — 스트리밍 가능한 HTTP MCP 전송

  • GET /mcp — SSE 스트리밍 전송

  • GET /health — 상태 확인 ({ status })

  • GET /.well-known/mcp/server-card.json — Smithery 호환 정적 도구 매니페스트

환경 변수

변수

필수

설명

PORT

아니오

HTTP 수신 포트 (기본값: 3000)

MCP_RATE_LIMIT

아니오

/mcp에서 IP당 분당 최대 요청 수 (기본값: 120)

TRUST_PROXY_HOPS

아니오

X-Forwarded-For에 대해 신뢰할 리버스 프록시 홉 수 (기본값: 1).


보안

이 서버는 공개된 Buda.com API 엔드포인트만 노출합니다. 자격 증명은 수락되거나 저장되지 않습니다. 프롬프트 인젝션을 방지하기 위해 모든 도구 매개변수에 입력 유효성 검사가 적용됩니다. 오류 메시지는 정제되며, 내부 세부 정보(경로, 업스트림 오류)는 stderr에만 기록되고 호출자에게 반환되지 않습니다.

취약점 보고

보안 문제는 공개 이슈가 아닌 GitHub 보안 권고를 통해 비공개로 보고해 주십시오. 전체 공개 정책은 SECURITY.md를 참조하십시오.


프로젝트 구조

src/
  client.ts                   BudaClient (HTTP + 429 retry)
  cache.ts                    In-memory TTL cache with in-flight deduplication
  types.ts                    TypeScript types for Buda API responses
  validation.ts               validateMarketId(), validateCurrency()
  utils.ts                    flattenAmount(), aggregateTradesToCandles(), getLiquidityRating()
  version.ts                  Single source of truth for version string
  index.ts                    stdio MCP server entrypoint
  http.ts                     HTTP/SSE MCP server entrypoint
  tools/
    markets.ts                get_markets
    ticker.ts                 get_ticker
    orderbook.ts              get_orderbook
    trades.ts                 get_trades
    volume.ts                 get_market_volume
    spread.ts                 get_spread
    compare_markets.ts        compare_markets
    price_history.ts          get_price_history
    arbitrage.ts              get_arbitrage_opportunities
    market_summary.ts         get_market_summary
    simulate_order.ts         simulate_order
    calculate_position_size.ts calculate_position_size
    market_sentiment.ts       get_market_sentiment
    technical_indicators.ts   get_technical_indicators
    banks.ts                  get_available_banks
    quotation.ts              get_real_quotation
marketplace/
  cursor-mcp.json             Cursor MCP config example
  claude-listing.md           Claude registry listing
  openapi.yaml                OpenAPI spec (GPT Actions / HTTP wrapper)
  gemini-tools.json           Gemini function declarations

문서

에이전트 컨텍스트: AGENTS.md | 운영 노트: docs/PROJECT_MEMORY.md | 변경 로그: CHANGELOG.md | 보안: SECURITY.md


라이선스

MIT — Buda.com API 문서

Available Tools

17 tools
calculate_position_sizeA

Calculates position size based on your capital, risk tolerance, entry price, and stop-loss. Determines how many units to buy or sell so that a stop-loss hit costs exactly risk_pct% of capital. Fully client-side — no API call is made. Example: 'How many BTC can I buy on BTC-CLP if I have 1,000,000 CLP, risk 2%, entry 80,000,000 CLP, stop at 78,000,000 CLP?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-COP'). Used to derive the quote currency.
capitalYesTotal available capital in the quote currency (e.g. CLP for BTC-CLP).
risk_pctYesPercentage of capital to risk on this trade (0.1–10, e.g. 2 = 2%).
entry_priceYesPlanned entry price in quote currency.
stop_loss_priceYesStop-loss price in quote currency. Must be below entry for buys, above entry for sells.

TDQS

A4.4/5.0
Behavior4/5

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

It explicitly states 'Fully client-side — no API call is made,' which is critical behavioral info. However, it omits details on validation or error handling for invalid inputs.

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 three sentences plus an illustrative example, front-loaded with the core function, and each sentence adds essential information without redundancy.

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

Completeness4/5

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

It adequately explains the tool's purpose and inputs, but lacks explicit description of the return value (position size in units) and does not address edge cases.

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 covers all parameters with descriptions (100% coverage). The description adds value by explaining the formula and providing an example that ties parameters together.

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 calculates position size based on capital, risk, entry, and stop-loss, and differentiates it from sibling tools like get_market_summary or simulate_order by its specific calculation role.

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 clarifies that the tool is client-side and provides an example, but does not explicitly state when to avoid using it or mention alternatives among siblings.

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

compare_marketsA

Returns side-by-side ticker data for all trading pairs of a given base currency across Buda.com's supported quote currencies (CLP, COP, PEN, BTC, USDC, ETH). All prices are floats; price_change_24h and price_change_7d are floats in percent (e.g. 1.23 means +1.23%). Example: 'In which country is Bitcoin currently most expensive on Buda?'

ParametersJSON Schema
NameRequiredDescriptionDefault
base_currencyYesBase currency to compare across all available markets (e.g. 'BTC', 'ETH', 'XRP').

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description explains return types (floats, percentages). No mention of authentication or rate limits, but for a read operation it is sufficiently transparent.

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?

Three sentences: function, data format, example. No superfluous text, front-loaded with key information.

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

Completeness4/5

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

Given no output schema, description explains return types and gives an example. Could be slightly more explicit about the structure of the 'side-by-side' data, but largely complete for a simple 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 already describes the parameter well (100% coverage). Description adds context by listing supported quote currencies and providing an example, adding meaning beyond the schema.

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

Purpose5/5

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

Clearly states that it returns side-by-side ticker data for a base currency across supported quote currencies. Distinguishes from siblings like get_ticker or get_markets by focusing on cross-market comparison.

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 an example question that guides when to use. Does not explicitly exclude alternatives or mention when not to use, but the purpose is well-defined.

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

get_arbitrage_opportunitiesA

Detects cross-country price discrepancies for a given asset across Buda's CLP, COP, and PEN markets, normalized to USDC. Fetches all relevant tickers, converts each local price to USDC using the current USDC-CLP / USDC-COP / USDC-PEN rates, then computes pairwise discrepancy percentages. Results above threshold_pct are returned sorted by opportunity size. Note: Buda taker fee is 0.8% per leg (~1.6% round-trip) — always deduct fees before acting on any discrepancy. Example: 'Is there an arbitrage opportunity for BTC between Chile and Peru right now?'

ParametersJSON Schema
NameRequiredDescriptionDefault
base_currencyYesBase asset to scan (e.g. 'BTC', 'ETH', 'XRP').
threshold_pctNoMinimum price discrepancy percentage to include in results (default: 0.5). Buda taker fee is 0.8% per leg, so a round-trip requires > 1.6% to be profitable.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It explains the internal steps (fetch tickers, convert to USDC, compute discrepancies) and the threshold logic. It also notes the fee deduction requirement. However, it omits potential error conditions or rate limits.

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 concise, well-structured, and front-loaded. It covers purpose, method, important notes, and an example in a compact form without redundancy.

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

Completeness4/5

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

Given no output schema, the description hints at the return format (sorted by opportunity size) and provides enough context for an agent to understand the tool's operation. Minor gaps like exact output structure are acceptable.

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%, but the description adds valuable context: it explains how threshold_pct relates to profitability given fees, and gives examples for base_currency. This enhances understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool detects cross-country price discrepancies for a given asset across specific markets, normalized to USDC. It uses specific verbs and resources, and the example helps clarify the 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 clear guidance on when to use the tool (to find arbitrage opportunities) and includes important context like fee structure and the need to deduct fees. It doesn't explicitly mention alternatives but the context is sufficient.

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

get_available_banksA

Returns banks available for deposits and withdrawals of a fiat currency on Buda.com. Returns an empty banks array (not an error) if the currency has no associated banks (e.g. crypto currencies or unsupported fiat currencies). Results are cached for 60 seconds. Example: 'Which banks can I use for CLP deposits?'

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYesCurrency code (e.g. 'CLP', 'COP', 'PEN').

TDQS

A4.5/5.0
Behavior4/5

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

Discloses non-error empty array for unsupported currencies and 60-second caching, providing useful behavioral context beyond the schema.

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

Conciseness5/5

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

Three sentences efficiently cover purpose, edge case, caching, and an example 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?

Completeness is high: explains return type (array, potentially empty) and caching, sufficient for a simple read tool with no output schema.

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

Parameters4/5

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

Adds context that currency parameter refers to fiat currency for deposit/withdrawal purposes, enriching the schema's code-only description.

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 returns banks for deposits/withdrawals of a fiat currency on Buda.com, differentiating it from sibling tools focused on markets and orders.

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?

Implicitly guides usage by specifying fiat currencies and noting crypto gives empty array, but does not explicitly contrast with other tools.

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

get_marketsA

Lists all available trading pairs on Buda.com, or returns details for a specific market (base/quote currencies, taker/maker fees as decimals, minimum order size in base currency, and fee discount tiers). Omit market_id to get all ~26 markets at once. Example: 'What is the taker fee and minimum order size for BTC-CLP?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNoOptional market ID (e.g. 'BTC-CLP', 'ETH-BTC'). Omit to list all markets.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description fully describes what the tool returns: base/quote currencies, fees as decimals, minimum order size, and fee tiers. This covers the behavioral aspect of the tool's output, though no mention of rate limits or auth, which is acceptable for a read-only list.

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?

Two sentences and an example question, with no wasted words. Front-loaded with the main action. Every sentence 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 no output schema, the description explains the return details completely. The single parameter is well-described. The tool's purpose is fully covered for an agent to use correctly.

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

Parameters4/5

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

Schema coverage is 100% with a clear description of market_id as optional. The description adds an example ('BTC-CLP') and context about omitting it, enhancing understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists trading pairs or returns details for a specific market, using the verb 'lists' and specifying the resource. It distinguishes from siblings like get_market_summary by focusing on a list of markets and detailed fees.

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 guidance to omit market_id for all markets or provide it for a specific market. Includes an example question to clarify usage. No explicit when-not or alternatives mentioned, but the instruction is clear.

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

get_market_sentimentA

Computes a composite sentiment score (−100 to +100) for a Buda.com market based on 24h price variation (40%), volume vs 7-day average (35%), and bid/ask spread vs baseline (25%). Returns a score, a label (bearish/neutral/bullish), and a full component breakdown. Example: 'Is the BTC-CLP market currently bullish or bearish?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC', 'BTC-USDT').

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses the three components and their weights, output details (score, label, breakdown), and the score range, offering complete transparency.

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?

Two sentences efficiently convey the formula, output, and an example, with no wasted words.

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 missing annotations and output schema, the description thoroughly covers input, computation, and output structure, making it fully actionable.

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% and the description adds meaningful context (e.g., Buda.com market, example values) beyond the schema's minimal description.

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 specifies a composite sentiment score with a detailed formula, distinguishing it from sibling tools like get_market_summary or get_ticker.

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 an example question ("Is the BTC-CLP market currently bullish or bearish?") that implies the tool's use case, though it does not explicitly contrast with alternatives.

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

get_market_summaryA

One-call summary of everything relevant about a market: last price, best bid/ask, spread %, 24h volume, 24h and 7d price change, and a liquidity_rating ('high' / 'medium' / 'low' based on spread thresholds: < 0.3% = high, 0.3–1% = medium, > 1% = low). All prices and volumes are floats. Best first tool to call when a user asks about any specific market. Example: 'Give me a complete overview of the BTC-CLP market right now.'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-COP', 'BTC-PEN').

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully explains the output: last price, bid/ask, spread %, volume, changes, and liquidity rating with threshold logic. It does not disclose rate limits or permissions, but it adequately describes the tool's behavior.

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 three sentences long, front-loads the purpose, lists key return fields, and includes an example. No redundant information.

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

Completeness4/5

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

Given the simple input schema and no output schema, the description sufficiently covers what the tool returns and includes logic for derived fields. It omits explicit output format, but overall completeness is good.

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 single parameter (market_id) has 100% schema description coverage. The description adds value by providing an example and clarifying the parameter's format, going beyond the schema.

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

Purpose5/5

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

The description clearly states it provides a one-call summary of a market including price, bid/ask, spread %, volume, changes, and liquidity rating. It distinguishes from siblings by recommending it as the best first tool for specific market queries.

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 explicitly says 'Best first tool to call when a user asks about any specific market,' providing clear usage context. It lacks mention of when not to use it or alternatives, but the guidance is strong for the intended use.

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

get_market_volumeB

Returns 24h and 7-day transacted volume for a Buda.com market, split by buy (bid) and sell (ask) side. All volume values are floats in the base currency (e.g. BTC for BTC-CLP). Example: 'How much Bitcoin was sold on BTC-CLP in the last 24 hours?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC').

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It describes the output but does not disclose behavioral aspects such as error handling, rate limits, or authentication needs. However, there is no contradiction with the implicit read-only 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 concise with two sentences plus an example, no redundant information, and the key action is front-loaded. Every sentence adds value.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description adequately explains the output format. However, it lacks usage context and behavioral transparency, leaving some gaps for an AI agent to infer.

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 already fully describes the parameter 'market_id' (100% coverage). The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states that the tool returns 24h and 7-day transacted volume split by bid/ask side for a Buda.com market. It includes an example and mentions the base currency, making the purpose specific and distinct from sibling tools like get_market_summary or get_ticker.

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

Usage Guidelines2/5

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

The description provides an example query but no explicit guidance on when to use this tool versus alternatives (e.g., get_market_summary, get_orderbook). There is no mention of when-not-to-use or prerequisites.

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

get_orderbookA

Returns the current order book for a Buda.com market as typed objects with float price and amount fields. Bids are sorted highest-price first; asks lowest-price first. Prices are in the quote currency; amounts are in the base currency. Example: 'What are the top 5 buy and sell orders for BTC-CLP right now?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC').
limitNoMaximum number of levels to return per side (default: all).

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses sorting order, currency meanings, and typed objects, but does not mention data freshness, rate limits, or authorization requirements.

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 two sentences plus an example, concise and front-loaded with the main purpose. Every sentence adds value.

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 no output schema, the description adequately explains return values (price, amount, sorting, typed). It includes an example query. Minor missing detail: does not explicitly state that limit is optional, but schema indicates that.

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

Parameters3/5

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

Schema coverage is 100%, so description adds little beyond schema for parameter meaning. The example provides context for the limit parameter but no new semantic details.

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 returns the current order book for a Buda.com market with typed objects, sorted bids and asks, and includes an example query. This distinguishes it from sibling tools like get_ticker or get_market_summary.

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 example query implies when to use the tool (e.g., asking for top buy/sell orders), and the description's focus on order book data differentiates it from other tools. However, there is no explicit statement about when not to use it or alternatives for related data.

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

get_price_historyA

IMPORTANT: Candles are aggregated client-side from raw trades (Buda has no native candlestick endpoint) — fetching more trades via the 'limit' parameter gives deeper history but slower responses. Returns OHLCV candles (open/high/low/close as floats in quote currency; volume as float in base currency) for periods 5m, 15m, 30m, 1h, 4h, or 1d. Candle timestamps are UTC bucket boundaries. Example: 'Show me the hourly BTC-CLP price chart for the past 24 hours.'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC').
periodNoCandle period: '5m', '15m', '30m', '1h', '4h', or '1d'. Default: '1h'.1h
limitNoRaw trades to fetch before aggregation (default: 100, max: 1000). More trades = deeper history but slower response.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that candles are aggregated client-side from raw trades (a key behavioral detail) and explains performance implications of the limit parameter. It also specifies the return format (OHLCV floats) and valid periods.

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 slightly long but front-loaded with important warnings. Each sentence adds value: warning about aggregation, output format, valid periods, and example. Could be slightly more concise but achieves good clarity.

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 no output schema, the description explains the return format thoroughly. It covers all parameters and provides usage context. It lacks discussion of error cases (e.g., invalid market_id) but is otherwise complete for a read-only 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?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the limit parameter's performance trade-off and providing an example. It also restates period options, reinforcing schema information.

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 returns OHLCV candles aggregated from raw trades for specific periods. It distinguishes itself from sibling tools like get_trades (raw trades) and get_ticker (current price) by explaining the client-side aggregation and the candle format.

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 includes an example and explains the trade-off for the limit parameter (deeper history vs slower response). It implicitly suggests when to use this tool (for candlestick data) and when not (if raw trades are needed, use get_trades). However, it does not explicitly name alternatives.

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

get_real_quotationA

Gets a server-side price quotation for a buy or sell on Buda.com. Calls the Buda quotation API to compute an accurate fill estimate including fees, based on live order book state. Prefer this over simulate_order for accurate fee-tier-aware quotes. This is a POST (not idempotent) but does not place an order. Public endpoint — no API key required. Parameters: market_id, type ('Bid'|'Ask'), amount, optional limit price. Example: 'Get an accurate quote to sell 0.05 BTC on BTC-CLP.'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC').
typeYes'Bid' to buy base currency, 'Ask' to sell base currency.
amountYesOrder size (positive number).
limitNoOptional limit price in quote currency.

TDQS

A4.4/5.0
Behavior4/5

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

Discloses it is a POST (not idempotent) but does not place an order, public endpoint, no API key needed. Lacks details on response format or rate limits, but overall adds good behavioral context beyond no 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?

Four sentences, front-loaded with the core action, no fluff. Efficiently conveys key information.

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

Completeness4/5

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

Covers purpose, usage, and key behavioral traits. With no output schema, a brief mention of return fields would improve completeness, but current description is sufficient for understanding the tool's role.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline 3 is appropriate. Description lists parameters and provides an example, but adds minimal extra meaning beyond what the schema already offers.

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 gets a server-side price quotation, computes fill estimate including fees, and distinguishes from simulate_order by specifying it is for accurate fee-tier-aware quotes.

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 advises preferring this tool over simulate_order for accurate fee-tier-aware quotes, and notes it is a public endpoint with no API key required, providing clear when-to-use guidance.

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

get_spreadA

Returns the best bid, best ask, absolute spread, and spread percentage for a Buda.com market. All prices are floats in the quote currency (e.g. CLP). spread_percentage is a float in percent (e.g. 0.15 means 0.15%). Use this to evaluate liquidity before placing a large order. Example: 'Is BTC-CLP liquid enough to buy 10M CLP without significant slippage?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC', 'BTC-COP').

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full weight. It explains return fields (best bid, ask, spread percentage) and their types (floats, percent). It does not mention permissions or data freshness, but for a read-only data fetch, this is sufficient. No destructive behavior implied.

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 three sentences plus an example, all front-loaded with what the tool returns, then usage guidance. Every sentence adds value with no 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?

For a simple tool with one parameter and no annotations or output schema, the description covers return values, units, and use case. It is fully adequate for an agent to understand and invoke 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 only parameter 'market_id' has 100% schema coverage. The description adds context beyond the schema by specifying that prices are in quote currency (e.g., CLP) and that spread_percentage is a float in percent. This clarifies the format and units.

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 returns best bid, best ask, spread, and spread percentage for a Buda.com market. It uses specific verbs ('Returns') and resource ('spread'), and differentiates from siblings like get_ticker or get_orderbook by focusing on liquidity evaluation.

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 advises using the tool to evaluate liquidity before placing a large order and provides an example question. It implies when to use it but does not explicitly contrast with siblings like get_orderbook or get_market_summary. Still, context is clear enough.

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

get_stable_liquidityA

Returns spread and market-impact slippage for all stablecoin markets on Buda.com (USDT-CLP, USDC-CLP, USDT-PEN, USDC-PEN, USDT-COP, USDC-COP, USDT-USDC, etc.). Slippage is computed by walking the live order book for five fixed USD notional sizes: 1k, 5k, 10k, 50k, and 100k. Positive buy_pct means you pay more than the best ask; negative sell_pct means you receive less than the best bid. null values indicate insufficient order book depth for that size. Example: 'How liquid are the stablecoin markets on Buda right now?'

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Without annotations, the description fully explains behavior: computation via walking the order book, meaning of buy_pct/sell_pct, null values for insufficient depth, and the fixed sizes, providing comprehensive transparency.

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?

Two sentences plus an example, front-loaded with key information, no wasted words, efficient and clear.

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 no parameters and no output schema, the description covers all important aspects: markets, sizes, value interpretation, and even an example query, making it sufficiently complete.

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?

No parameters exist; schema coverage is trivially 100%. The description adds substantial meaning about the tool's behavior, going beyond schema by explaining output interpretation, which is helpful.

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 returns spread and market-impact slippage for stablecoin markets on Buda.com, specifying exact markets, fixed sizes, and interpretation of values, distinguishing it from sibling tools like get_spread.

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 context with example query, but lacks explicit when-to-use vs alternatives or when-not-to-use guidance, though the specificity makes usage clear.

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

get_technical_indicatorsA

Computes RSI (14), MACD (12/26/9), Bollinger Bands (20, 2σ), SMA 20, and SMA 50 from Buda trade history — no external data or libraries. Supports periods: 5m, 15m, 30m, 1h, 4h, 1d. Use shorter periods (5m/15m) for intraday analysis. Uses at least 500 trades for reliable results (set limit=1000 for maximum depth). Returns latest indicator values and signal interpretations (overbought/oversold, crossover, band position). If fewer than 20 candles are available after aggregation, returns a structured warning instead. Example: 'Is BTC-CLP RSI overbought on the 4-hour chart?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC').
periodNoCandle period: '5m', '15m', '30m', '1h', '4h', or '1d'. Default: '1h'.1h
limitNoNumber of raw trades to fetch (default: 500, max: 1000). More trades = more candles = more reliable indicators.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the use of internal data only, minimum trade count (500), and that it returns indicator values plus signal interpretations. It also covers the edge case of insufficient data returning a warning. Missing details on authentication needs or potential side effects, but given the context, these disclosures are adequate.

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 four sentences long, each with a clear purpose: core function, period list, usage tip, and output/warning. It is well-structured, front-loaded, and contains no fluff.

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?

The tool has three parameters, all documented. Although there is no output schema, the description explains the return format (latest indicator values and signal interpretations, or warning). The example question provides additional context. It might lack a detailed breakdown of each indicator's output, but it is sufficiently complete for an 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?

All three parameters have schema descriptions (100% coverage). The description adds value by explaining the effect of limit on reliability and the purpose of periods for intraday vs. longer-term analysis. This exceeds the baseline of 3.

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 computes specific technical indicators (RSI, MACD, Bollinger Bands, SMA 20, SMA 50) from Buda trade history, with explicit periods. It includes an example question, making its purpose unmistakable. No sibling tool computes indicators, so it is well-distinguished.

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 advises using shorter periods for intraday analysis and recommends a limit of 1000 for maximum depth. It also notes that insufficient candles yield a warning. However, it does not explicitly state when not to use this tool or mention alternatives (e.g., get_price_history for raw data).

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

get_tickerA

Returns the current market snapshot for a Buda.com market: last traded price, best bid, best ask, 24h volume, and price change over 24h and 7d. All prices are floats in the quote currency (e.g. CLP for BTC-CLP). price_variation_24h is a decimal fraction (0.012 = +1.2%). Example: 'What is the current Bitcoin price in Chilean pesos?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC', 'BTC-COP').

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It discloses that it returns a read-only snapshot with specific fields and explains the format of price_variation_24h. It does not mention side effects, rate limits, or authentication, but as a simple read tool, the disclosure is adequate.

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

Conciseness5/5

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

The description is three sentences long, front-loaded with the core purpose and details. The example is relevant and adds value. No unnecessary words.

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 no output schema, the description must explain return values. It lists all key fields and explains the price_variation format. It could mention the exact JSON structure, but for a ticker, it is sufficiently complete.

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% for the single parameter market_id. The description adds context by providing examples (e.g., 'BTC-CLP') and explaining that prices are in the quote currency, which goes beyond the schema description.

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 what the tool returns: a market snapshot with specific fields (last price, bid, ask, volume, price changes). It distinguishes from siblings like get_orderbook or get_price_history by focusing on current ticker data. The example query reinforces the purpose.

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

Usage Guidelines3/5

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

The description implies usage for current price queries via an example, but does not explicitly state when to use this tool over siblings like get_market_summary. There is no guidance on when not to use it or alternatives.

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

get_tradesA

Returns recent trade history for a Buda.com market as typed objects. Each entry has timestamp_ms (integer), amount (float, base currency), price (float, quote currency), and direction ('buy' or 'sell'). Example: 'What was the last executed price for BTC-CLP and was it a buy or sell?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC').
limitNoNumber of trades to return (default: 50, max: 100).
timestampNoUnix timestamp (seconds) to paginate from. Returns trades older than this timestamp.

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It describes the output fields but does not disclose behavioral traits such as data freshness, rate limits, authentication requirements, or pagination behavior (timestamp parameter is not fully explained). The term 'recent' is vague.

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?

Two sentences plus an example, with no wasted words. The purpose and output structure are front-loaded. The example is practical and adds value without redundancy.

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

Completeness4/5

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

For a simple list tool with no output schema, the description covers the key return fields and provides a concrete example. It lacks details on error handling, edge cases (e.g., empty trades), or pagination behavior, but is sufficient for typical use.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema's parameter descriptions. The example illustrates usage but does not elaborate on parameter constraints or formats.

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 returns 'recent trade history for a Buda.com market as typed objects' and specifies the exact fields (timestamp_ms, amount, price, direction). This distinguishes it from siblings like get_ticker or get_market_summary.

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

Usage Guidelines3/5

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

The description implies usage for retrieving trade history but provides no explicit guidance on when to use this tool versus alternatives like get_ticker or get_price_history. No exclusions or when-not-to-use scenarios are given.

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

simulate_orderA

[DEPRECATED: prefer get_real_quotation for server-side accurate quotes] Simulates a buy or sell order on Buda.com using live ticker data — no order is placed. Returns estimated fill price, fee, total cost, and slippage vs mid-price. Omit 'price' for a market order simulation; supply 'price' for a limit order simulation. All outputs are labelled simulation: true — this tool never places a real order. Example: 'How much would it cost to buy 0.01 BTC on BTC-CLP right now?'

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idYesMarket ID (e.g. 'BTC-CLP', 'ETH-BTC').
sideYes'buy' or 'sell'.
amountYesOrder size in base currency (e.g. BTC for BTC-CLP).
priceNoLimit price in quote currency. Omit for a market order simulation.

TDQS

A4.7/5.0
Behavior5/5

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

State that no real order is placed, outputs are labeled simulation:true, and lists returned estimates (fill price, fee, cost, slippage). No annotations exist, so description fully covers behavioral traits.

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?

Two sentences plus an example. Very concise: starts with deprecation, then core functionality, usage rules, safety guarantee, and an example. Every sentence earns its place.

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

Completeness5/5

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

Completely covers how to use both market and limit order simulations, what outputs to expect, and reaffirms no real order is placed. No output schema, so description adequately explains return values.

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 baseline 3. Description adds value by explaining the role of the 'price' parameter (optional, omitted for market orders) and clarifies that 'amount' is in base currency. Adds context beyond 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 it simulates a buy or sell order on Buda.com using live ticker data, and explicitly distinguishes from the preferred sibling get_real_quotation by marking itself as deprecated. The verb 'simulate' and resource 'order on Buda.com' are specific.

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 instructions: omit price for market order simulation, supply price for limit order simulation. Includes an example query. Does not explicitly exclude other tools but the deprecation note guides toward get_real_quotation for accuracy.

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

Tool Schema Changelog

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

  1. 1 tool update
    • Addedget_stable_liquidity
  2. 16 tool updatesv2.0.0
    • First observedcalculate_position_size
    • First observedcompare_markets
    • First observedget_arbitrage_opportunities
    • First observedget_available_banks
    • First observedget_market_sentiment
    • First observedget_market_summary
    • First observedget_market_volume
    • First observedget_markets
    • First observedget_orderbook
    • First observedget_price_history
    • First observedget_real_quotation
    • First observedget_spread
    • First observedget_technical_indicators
    • First observedget_ticker
    • First observedget_trades
    • First observedsimulate_order

TDQS

A3.9/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have clearly distinct purposes (trades, volume, spread, summary, indicators, etc.), but specify_market functions like get_ticker, get_market_summary, and get_market_volume have overlapping market snapshot data. However, descriptions differentiate them well (summary is one-call, volume focuses on volume, ticker is a snapshot).

Naming Consistency4/5

Tools follow a consistent verb_noun pattern with 'get_' prefix, e.g., get_trades, get_spread, get_markets. Minor deviations include calculate_position_size, simulate_order, and compare_markets, which use different verbs but are still readable and fit the domain.

Tool Count4/5

17 tools is slightly above the ideal 3-15 but still well-scoped for a comprehensive market data server. Each tool serves a specific market data or analysis function, and there are no redundant tools (though simulate_order is deprecated, it is still useful for backward compatibility).

Completeness4/5

The tool surface covers a broad range of market data needs: market overview, order book, trades, history, technical indicators, sentiment, quotation, and stablecoin liquidity. Minor gaps include lack of direct order placement (but that is out of scope for a read-only server) and no explicit tool for order book depth beyond get_orderbook, but the main analytics are well covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time and historical cryptocurrency market data from 100+ exchanges including prices, OHLCV data, market statistics, and order books through the CCXT library with intelligent caching.
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Real-time financial market data MCP server. Stocks, crypto, technicals, sentiment, FDA calendar. No API keys required.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Live market data for AI agents. 8 tools: real-time crypto prices, OHLCV candles, order books, market cap rankings, trending coins, technical analysis (RSI/SMA/z-score), asset comparison, and Fear & Greed index. Zero API keys, zero dependencies.
    8
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Real-time institutional crypto & equity orderflow intelligence. Detects BUY/SELL pressure from live Binance L2 orderbook and aggressive trade feeds for any USDT pair or US equity.
    10
    4
    MIT