buda-mcp
buda-mcp is a read-only MCP server giving AI assistants live access to Buda.com cryptocurrency exchange data across Chile, Colombia, and Peru — no account or API key required.
Market Discovery: List all ~26 trading pairs or get detailed info (fees, minimum order size, discount tiers) for a specific market.
Live Price Data: Real-time snapshots of last price, best bid/ask, 24h volume, and price changes.
Market Summary: One-call overview including spread %, volume, price changes, and a liquidity rating (high/medium/low).
Order Book: Current buy/sell orders sorted by price with optional depth limiting.
Trade History: Recent executed trades with timestamp, amount, price, and direction.
Volume & Spread Analysis: 24h/7-day volume split by buy/sell side; bid/ask spread (absolute and percentage).
Cross-Market Comparison: Compare ticker data for a base asset (e.g. BTC) across all quote currencies (CLP, COP, PEN, USDC, BTC, ETH).
Price History (OHLCV): Candlestick data aggregated from raw trades in 5m, 15m, 30m, 1h, 4h, or 1d periods.
Arbitrage Detection: Cross-country price discrepancies for an asset across CLP, COP, and PEN markets, normalized to USDC.
Order Simulation: Estimate fill price, fees, total cost, and slippage without placing a real order.
Accurate Quotation: Server-side, fee-tier-aware price quote using live order book data (preferred over simulation).
Position Sizing: Kelly-style calculation of units to trade given capital, risk %, entry price, and stop-loss (client-side).
Market Sentiment: Composite score (−100 to +100) with bearish/neutral/bullish label based on price change, volume trend, and spread.
Technical Indicators: RSI (14), MACD (12/26/9), Bollinger Bands (20, 2σ), SMA 20/50 — with signal interpretations.
Bank Information: Available banks for fiat deposits/withdrawals for CLP, COP, or PEN.
MCP Resources: Structured JSON accessible at
buda://markets,buda://ticker/{market}, andbuda://summary/{market}.
buda-mcp
MCP server for Buda.com — the leading cryptocurrency exchange in Chile, Colombia, and Peru. Gives any MCP-compatible AI assistant live access to market data, order books, trade history, spreads, technical indicators, and price simulation — no account or API key required.
Quick Start
npx @guiie/buda-mcpOr install permanently:
npm install -g @guiie/buda-mcp
buda-mcpRelated MCP server: market-data-mcp
Install in your MCP client
Claude Code
claude mcp add buda-mcp -- npx -y @guiie/buda-mcpClaude 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"]
}
}
}Tools
All tools are public — no API key or account required.
get_market_summary ⭐ Start here
One-call summary: last price, bid/ask, spread %, 24h volume, price change, and liquidity_rating (high / medium / low). Best first tool when a user asks about any specific market.
Parameter | Type | Required | Description |
| string | Yes | Market ID (e.g. |
get_markets
List all trading pairs on Buda.com, or get details for a specific market (fees, minimum order size, discount tiers).
Parameter | Type | Required | Description |
| string | No | Market ID (e.g. |
get_ticker
Current snapshot: last price, best bid/ask, 24h volume, and price change over 24h and 7d.
Parameter | Type | Required | Description |
| string | Yes | Market ID (e.g. |
get_orderbook
Current order book: sorted bids and asks as {price, amount} objects.
Parameter | Type | Required | Description |
| string | Yes | Market ID. |
| number | No | Max price levels per side (default: all). |
get_trades
Recent trade history as typed objects: {timestamp_ms, amount, price, direction}.
Parameter | Type | Required | Description |
| string | Yes | Market ID. |
| number | No | Number of trades (default 50, max 100). |
| number | No | Unix seconds — returns trades older than this (pagination). |
get_market_volume
24h and 7-day transacted volume by side (bid = buys, ask = sells).
Parameter | Type | Required | Description |
| string | Yes | Market ID. |
get_spread
Bid/ask spread: absolute value and percentage of the ask price.
Parameter | Type | Required | Description |
| string | Yes | Market ID. |
compare_markets
Side-by-side ticker data for all pairs of a given base currency across all quote currencies.
Parameter | Type | Required | Description |
| string | Yes | Base currency (e.g. |
get_price_history
OHLCV candles aggregated from raw trade history (Buda has no native candlestick endpoint). Supports 5m, 15m, 30m, 1h, 4h, 1d periods.
Parameter | Type | Required | Description |
| string | Yes | Market ID. |
| string | No |
|
| number | No | Raw trades to fetch before aggregation (default 100, max 1000). |
get_arbitrage_opportunities
Detects cross-country price discrepancies for an asset across Buda's CLP, COP, and PEN markets, normalized to USDC.
Parameter | Type | Required | Description |
| string | Yes | e.g. |
| number | No | Minimum discrepancy to report (default 0.5). |
simulate_order
Simulates a buy or sell order using live ticker data — no order is ever placed. Returns estimated_fill_price, fee_amount, total_cost, slippage_vs_mid_pct. All responses include simulation: true.
Parameter | Type | Required | Description |
| string | Yes | Market ID. |
|
| Yes | Order side. |
| number | Yes | Order size in base currency. |
| number | No | Omit for market order simulation. |
calculate_position_size
Kelly-style position sizing from capital, risk %, entry, and stop-loss. Fully client-side — no API call.
Parameter | Type | Required | Description |
| string | Yes | Market ID (for context). |
| number | Yes | Total capital to size from. |
| number | Yes | % of capital to risk (0.1–10). |
| number | Yes | Entry price. |
| number | Yes | Stop-loss price. |
get_market_sentiment
Composite sentiment score (−100 to +100) from three components: 24h price variation (40%), volume vs 7-day average (35%), spread vs market-type baseline (25%). Returns score, label, component_breakdown, and a disclaimer.
Parameter | Type | Required | Description |
| string | Yes | Market ID. |
get_technical_indicators
RSI (14), MACD (12/26/9), Bollinger Bands (20, 2σ), SMA 20, SMA 50 — computed server-side from Buda trade history (no external libraries). Returns signal interpretations and a structured warning if fewer than 20 candles are available. Includes disclaimer.
Parameter | Type | Required | Description |
| string | Yes | Market ID. |
| string | No |
|
| number | No | Raw trades to fetch (500–1000). |
get_real_quotation
Returns a real-time quotation for a given order amount and direction, showing exact fill price, fee, and balance changes without placing an order.
Parameter | Type | Required | Description |
| string | Yes | Market ID. |
|
| Yes | Order side. |
| number | Yes | Order size in base currency. |
| number | No | Limit price for limit quotations. |
get_available_banks
Lists available banks for fiat deposits/withdrawals in a given currency's country.
Parameter | Type | Required | Description |
| string | Yes | Fiat currency code (e.g. |
MCP Resources
In addition to tools, the server exposes MCP Resources that clients can read directly:
URI | Description |
| JSON list of all Buda.com markets |
| JSON ticker for a specific market (e.g. |
| Full market summary with liquidity rating (e.g. |
Markets covered
Quote | Country | Sample pairs |
CLP | Chile | BTC-CLP, ETH-CLP, SOL-CLP |
COP | Colombia | BTC-COP, ETH-COP, SOL-COP |
PEN | Peru | BTC-PEN, ETH-PEN |
USDC | USD-pegged | BTC-USDC, USDT-USDC |
BTC | Cross | ETH-BTC, LTC-BTC, BCH-BTC |
Build from source
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)Run tests:
npm run test:unit # 100 unit tests, no network required
npm run test:integration # live API tests (skips if unreachable)
npm test # bothHTTP / Railway deployment
The dist/http.js entrypoint runs an Express server with:
POST /mcp— Streamable HTTP MCP transportGET /mcp— SSE streaming transportGET /health— health check ({ status })GET /.well-known/mcp/server-card.json— Smithery-compatible static tool manifest
Environment variables
Variable | Required | Description |
| No | HTTP listen port (default: |
| No | Max requests per IP per minute on |
| No | Number of reverse-proxy hops to trust for |
Security
The server exposes only public Buda.com API endpoints. No credentials are accepted or stored. Input validation is applied to all tool parameters to prevent prompt injection. Error messages are sanitized — internal details (paths, upstream errors) are logged to stderr only and never returned to callers.
Reporting vulnerabilities
Please report security issues privately via GitHub Security Advisories — not as public issues. See SECURITY.md for the full disclosure policy.
Project structure
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 declarationsDocumentation
Agent context: AGENTS.md | Operational notes: docs/PROJECT_MEMORY.md | Changelog: CHANGELOG.md | Security: SECURITY.md
License
MIT — Buda.com API docs
Available Tools
17 toolscalculate_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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-COP'). Used to derive the quote currency. | |
| capital | Yes | Total available capital in the quote currency (e.g. CLP for BTC-CLP). | |
| risk_pct | Yes | Percentage of capital to risk on this trade (0.1–10, e.g. 2 = 2%). | |
| entry_price | Yes | Planned entry price in quote currency. | |
| stop_loss_price | Yes | Stop-loss price in quote currency. Must be below entry for buys, above entry for sells. |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| base_currency | Yes | Base currency to compare across all available markets (e.g. 'BTC', 'ETH', 'XRP'). |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| base_currency | Yes | Base asset to scan (e.g. 'BTC', 'ETH', 'XRP'). | |
| threshold_pct | No | Minimum 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
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | Currency code (e.g. 'CLP', 'COP', 'PEN'). |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | No | Optional market ID (e.g. 'BTC-CLP', 'ETH-BTC'). Omit to list all markets. |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC', 'BTC-USDT'). |
TDQS
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.
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.
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.
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.
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.
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.'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-COP', 'BTC-PEN'). |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC'). |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC'). | |
| limit | No | Maximum number of levels to return per side (default: all). |
TDQS
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.
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.
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.
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.
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.
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.'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC'). | |
| period | No | Candle period: '5m', '15m', '30m', '1h', '4h', or '1d'. Default: '1h'. | 1h |
| limit | No | Raw trades to fetch before aggregation (default: 100, max: 1000). More trades = deeper history but slower response. |
TDQS
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.
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.
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.
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.
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.
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.'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC'). | |
| type | Yes | 'Bid' to buy base currency, 'Ask' to sell base currency. | |
| amount | Yes | Order size (positive number). | |
| limit | No | Optional limit price in quote currency. |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC', 'BTC-COP'). |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC'). | |
| period | No | Candle period: '5m', '15m', '30m', '1h', '4h', or '1d'. Default: '1h'. | 1h |
| limit | No | Number of raw trades to fetch (default: 500, max: 1000). More trades = more candles = more reliable indicators. |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC', 'BTC-COP'). |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC'). | |
| limit | No | Number of trades to return (default: 50, max: 100). | |
| timestamp | No | Unix timestamp (seconds) to paginate from. Returns trades older than this timestamp. |
TDQS
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.
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.
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.
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.
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.
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| market_id | Yes | Market ID (e.g. 'BTC-CLP', 'ETH-BTC'). | |
| side | Yes | 'buy' or 'sell'. | |
| amount | Yes | Order size in base currency (e.g. BTC for BTC-CLP). | |
| price | No | Limit price in quote currency. Omit for a market order simulation. |
TDQS
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.
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.
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.
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.
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.
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 tool update
- Added
get_stable_liquidity
16 tool updates
v2.0.0- First observed
calculate_position_size - First observed
compare_markets - First observed
get_arbitrage_opportunities - First observed
get_available_banks - First observed
get_market_sentiment - First observed
get_market_summary - First observed
get_market_volume - First observed
get_markets - First observed
get_orderbook - First observed
get_price_history - First observed
get_real_quotation - First observed
get_spread - First observed
get_technical_indicators - First observed
get_ticker - First observed
get_trades - First observed
simulate_order
TDQS
Scored across 17 tools
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).
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.
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).
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
Related MCP Connectors
Real-time market data, screeners, technical analysis & backtesting for stocks, crypto and forex.
Real-time crypto market data: candles, tickers, orderbooks across 13+ exchanges via MCP.
Real-time crypto prices from Binance, Coinbase, Kraken, OKX, and Bybit
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides 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.-
- -licenseNot gradedqualityNot gradedmaintenanceReal-time financial market data MCP server. Stocks, crypto, technicals, sentiment, FDA calendar. No API keys required.-
- AlicenseAqualityCmaintenanceLive 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.81MIT
- AlicenseAqualityCmaintenanceReal-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.102MIT