Indodax MCP Crypto Trading
The Indodax MCP Crypto Trading server provides a comprehensive interface to the Indodax cryptocurrency exchange, covering market data, account management, trading, paper trading, price alerts, and real-time WebSocket streaming — all accessible via MCP tools.
Market Data (public, no auth required)
Fetch server time, tickers (single or all pairs), trading pairs list, 24h/7d market summaries, order book depth, recent trades, OHLCV candlestick data, and price increments.
Get real-time WebSocket snapshots for ticker, order book, and summaries.
Account Management (requires authentication)
View account info, non-zero balances, open orders, order history, trade history, transaction history (deposits/withdrawals), and individual order details.
Spot Trading (requires authentication)
Place buy/sell orders, cancel orders by ID or client order ID, cancel all orders for a pair, and configure a deadman countdown.
Funding (requires authentication)
Check withdrawal fees, initiate crypto withdrawals, and manage callback URL validation.
Paper Trading (no auth required)
Initialize/reset with virtual balances, place simulated buy/sell orders (limit or market), list/cancel/cancel-all orders, manually fill orders or auto-fill based on live market prices, and view history and P&L status.
Price Alerts
Add alerts based on price thresholds (above/below) or percentage changes (up/down), then list, cancel, check, and watch them.
Authentication & Configuration
Set, test, and display API key/secret/callback URL credentials.
WebSocket
Generate public or private WebSocket tokens for external streaming clients.
MCP Resources & Prompts
Inspect current API configuration, trading pairs, and paper trading state as read-only resources; use pre-built prompt templates for creating orders, checking portfolios, and analyzing markets.
Indodax CLI & MCP Server
Professional command-line interface and Model Context Protocol (MCP) server for the Indodax cryptocurrency exchange.
🤖 AI Agent & Mobile Support (MCP)
This project is now a fully-featured MCP server, allowing AI agents (like ChatGPT, Claude, and Glama) to interact with Indodax.
Desktop: Use with Claude Desktop for a local trading experience.
Mobile: Use via ChatGPT Actions or Glama with our built-in Isolated HTTP Bridge.
Features: Market data, private balances, trading, and risk-free paper trading.
👉 Read the MCP Full Feature Guide & Setup
Unofficial Rust CLI for Indodax. Use it to inspect markets, manage account data, place spot orders, stream live WebSocket events, run paper trading and price alerts, and expose the same command surface to agents through MCP.
Related MCP server: Indodax MCP Server
Highlights
Public market data: server time, pairs, ticker, all tickers, summaries, order book, trades, OHLC, and price increments.
Private account data: account info, balances, transactions, and trade history.
Spot trading: buy, sell, cancel, cancel by client order ID, cancel all, and deadman countdown.
Funding: withdrawal fee lookup, crypto withdrawal, and withdrawal callback validation server.
Real-time streams: ticker, trades, order book, summary, and private order updates.
Paper trading: risk-free simulated trading with balances, orders, fills, history, and status.
Price alerts: threshold and percentage alerts with one-shot checks or live WebSocket monitoring.
Automation-friendly output: human tables by default, JSON envelopes with
-o json.Credential resolution: CLI flags, environment variables, or
~/.config/indodax/config.toml.Agent support: MCP server mode with guarded dangerous operations.
Recent Highlights (v0.1.49)
MCP server overhaul: Alert tools, deposit address, auth configuration, WebSocket snapshot tools, Resources, and Prompts support.
WebSocket reliability overhaul: application-level pings, automatic reconnection with exponential backoff, and private WebSocket support for real-time order and balance updates.
Secure WebSocket authentication: configurable WebSocket tokens with fallback to a stable default.
TradeAPI-2 compliance: normalized symbol formats and stricter request handling across commands.
Response parsing improvements: order book handling supports both legacy and modern API shapes.
Installation
Install from source:
git clone https://github.com/ibidathoillah/indodax-cli.git
cd indodax-cli
cargo install --path .Install from crates.io:
cargo install indodax-cliInstall from npm:
npm install -g indodax-cliOn Android/Termux, npm install -g indodax-cli downloads the Android release binary when available. If the release asset is missing, it falls back to a local cargo build, so cargo still needs to be installed in Termux for that fallback path.
Run with Docker:
docker run --rm ibidathoillah/indodax-cli --help
docker run --rm -v ~/.config/indodax:/root/.config/indodax ibidathoillah/indodax-cli balanceRun from the checkout:
cargo build
./target/debug/indodax --helpQuick Start
Market data does not require credentials:
indodax server-time
indodax ticker btc/idr
indodax orderbook btc/idr --count 10
indodax pairs
indodax ohlc --pair btc/idr
indodax -o json ticker btc/idrConfigure private API credentials:
indodax auth set --api-key YOUR_API_KEY --api-secret YOUR_API_SECRET
indodax auth test
indodax auth showOr use environment variables:
export INDODAX_API_KEY=your_api_key
export INDODAX_API_SECRET=your_api_secretCredential priority:
--api-keyand--api-secretINDODAX_API_KEYandINDODAX_API_SECRET~/.config/indodax/config.toml
Command Reference
Global options:
indodax [OPTIONS] <COMMAND>
Options:
-o, --output <table|json> Output format [default: table]
--api-key <API_KEY> API key override
--api-secret <API_SECRET> API secret override
--api-secret-stdin Read API secret from stdin
-v, --verbose Enable verbose logs
--yes, --force Skip confirmation promptsMarket
indodax server-time
indodax pairs
indodax ticker btc/idr
indodax ticker-all
indodax summaries
indodax orderbook btc/idr --count 10
indodax trades btc/idr
indodax ohlc --pair btc/idr --interval 60
indodax history btc/idr --timeframe 15 --from 1779158061 --to 1779454161
indodax webdata btc/idr
indodax chat-history
indodax pairs-v2
indodax search-v2
indodax terminal-trade usdt/idr
indodax terminal-market usdt/idr
indodax terminal-categories
indodax onramp-config usdt/idr
indodax news btc
indodax price-incrementsAccount
indodax account-info
indodax balance
indodax transactions
indodax trades-history btc/idr --limit 5Trading
indodax order buy --pair btc/idr --idr 100000 --price 1000000000
indodax order buy --pair btc/idr --idr 100000 --order-type market
indodax order sell --pair btc/idr --amount 0.001 --price 1000000000
indodax order cancel --order-id 123456 --pair btc/idr --order-type buy
indodax order cancel-by-client-id --client-order-id CLIENT_ID
indodax --yes order cancel-all --pair btc/idr
indodax order countdown --pair btc/idr --countdown-time 60000Funding
indodax withdrawal fee --asset btc
indodax withdraw --asset btc --volume 0.001 --address bc1... --network BTC
indodax withdrawal serve-callback --port 8080For withdrawals, Indodax may require a callback URL. Configure it with:
indodax auth set --callback-url https://yourdomain.com/callbackWebSocket Streaming
Public streams:
indodax ws ticker btc/idr
indodax ws trades btc/idr
indodax ws book btc/idr
indodax ws summaryPrivate stream:
indodax ws ordersPrice Alerts
indodax alert add -p btc/idr --above 150000000
indodax alert add -p btc/idr --below 50000000
indodax alert add -p btc/idr --percent-up 5
indodax alert add -p btc/idr --percent-down 10
indodax alert list
indodax alert list --history
indodax alert cancel -i 1
indodax alert cancel --all
indodax alert check
indodax alert watch -p btc/idr
indodax alert triggeredAlerts are stored in ~/.config/indodax/alerts.json.
Paper Trading
indodax paper init
indodax paper init --idr 50000000 --btc 0.5
indodax paper balance
indodax paper buy -p btc/idr -i 1000000
indodax paper buy -p btc/idr -a 0.1 -r 500000000
indodax paper sell -p btc/idr -a 0.05 -r 1000000000
indodax paper orders --pair btc/idr
indodax paper cancel -i 1
indodax paper cancel-all
indodax paper fill -i 1
indodax paper fill -i 2 --price 110000000
indodax paper fill --all
indodax paper check-fills -p '{"btc/idr": 95000000, "eth/idr": 12000000}'
indodax paper topup -c usdt -a 50000
indodax paper history
indodax paper status
indodax paper resetPaper trading mirrors the live order interface for safer strategy testing.
Interactive Shell
indodax shellMCP Server
indodax mcp
indodax mcp -s all
indodax mcp -s all --allow-dangerous
indodax mcp -s market,trade,paperService groups:
Group | Tools | Auth Required | Dangerous |
| Server time, ticker, pairs, orderbook, trades, OHLC, price increments, WS snapshots | No | No |
| Balance, trade history, transactions, account info, open orders, order history, get order | Yes | No |
| Buy, sell, cancel, cancel all orders | Yes | Yes |
| Withdraw fees, withdraw crypto, deposit address | Yes | Yes |
| Paper trading init, balance, buy, sell, orders, cancel, fill, history, status | No | No |
| Show config, test credentials, set credentials | Varies | No |
| Add, list, cancel, check price alerts | No | No |
By default, trade and funding MCP tools require acknowledged: true. Use --allow-dangerous only for controlled local automation.
MCP Resources
The server exposes read-only resources that MCP clients can inspect:
Resource URI | Description |
| Current API configuration status |
| All available trading pairs from the API |
| Current paper trading state (balances, orders count) |
MCP Prompts
Pre-built prompt templates for common workflows:
Prompt | Arguments | Description |
|
| Generate buy/sell order with safety checks |
| (none) | Account balance and open orders overview |
|
| Market analysis with ticker, order book, and trades |
Glama Deployment
This server is optimized for deployment on Glama.
Manifest:
glama.jsondefines the required environment variables for the build spec.Docker: The included
Dockerfilebuilds only the CLI, MCP, and callback-server features, installs theindodax-clibinary, and also exposes anindodaxalias for clients that use the shorter command name.Environment Variables: Configure
INDODAX_API_KEYandINDODAX_API_SECRETin the Glama admin panel.
Use this Glama build spec:
{
"baseImage": "debian:trixie-slim",
"buildSteps": [
"apt-get update && apt-get install -y --no-install-recommends ca-certificates curl git pkg-config build-essential && rm -rf /var/lib/apt/lists/*",
"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y",
". $HOME/.cargo/env && cargo build --release --features cli,mcp,server",
"cp target/release/indodax-cli /usr/local/bin/indodax-cli && ln -s /usr/local/bin/indodax-cli /usr/local/bin/indodax"
],
"cmdArguments": [
"mcp-proxy",
"--",
"indodax-cli",
"mcp"
],
"nodeVersion": "26",
"pythonVersion": "3.14"
}If Glama fails while loading Docker metadata, such as ECONNRESET during load metadata for docker.io/library/debian:trixie-slim, retry the build. That failure happens before this project is cloned or compiled.
Example configuration for manual setup:
{
"mcpServers": {
"indodax": {
"command": "indodax",
"args": ["mcp", "-s", "all"]
}
}
}Output Formats
Table mode is the default:
indodax ticker btc/idrJSON mode is intended for scripting and automation:
indodax -o json ticker btc/idrError responses in JSON mode use structured envelopes:
{
"error": true,
"message": "Invalid trading pair: xxx_idr",
"error_type": "invalid_pair",
"retryable": false
}E2E Testing
The repository includes live API smoke tests:
./scripts/e2e_minimal.sh --public
./scripts/e2e_minimal.sh --private
./scripts/e2e_minimal.sh --ws
./scripts/e2e_websocket_mock.shEnvironment knobs:
INDODAX_BIN=./target/debug/indodaxLatest local verification:
cargo test: 296 passed
./scripts/e2e_minimal.sh --public: passed
./scripts/e2e_minimal.sh --private: skipped private checks (credentials unavailable)
./scripts/e2e_minimal.sh --ws: passedAPI Coverage
Public REST: Indodax market endpoints
Private REST: Indodax TradeAPI and TradeAPI-2 endpoints
Public WebSocket:
wss://ws3.indodax.com/ws/Private WebSocket:
wss://pws.indodax.com/ws/
Architecture
This project is inspired by the Kraken CLI architecture and built with modern Rust:
clapfor derive-based CLI parsingtokiofor async runtimetokio-tungstenitefor WebSocket streamsreqwestfor REST API callsserdefor serialization and deserializationcomfy-tablefor terminal tablesrmcpfor Model Context Protocol support
Testing Standards
Every release should pass:
Unit tests with
cargo testPublic E2E smoke tests
WebSocket smoke tests
Private read-only tests when credentials are available
Coverage is maintained across auth, client, config, errors, commands, mcp, and output modules.
Security
Credentials are stored with
0600permissions when usingindodax auth set.HMAC-SHA512 signing is used for private API authentication.
Prefer read-only API keys for account inspection and WebSocket monitoring.
Use least-privilege exchange API keys for MCP and automation.
Never commit real API keys, secrets, callback tokens, or listen keys.
Development
cargo fmt
cargo test
cargo buildContributing
Contributions are welcome:
Fork the repository.
Create a feature branch.
Run tests and relevant E2E smoke checks.
Open a pull request.
Related Projects
If you use multiple exchanges, check out these related CLI tools built with the same architecture:
indodax-cli - CLI for Indodax
bittime-cli - CLI for Bittime
binance-cli - CLI for Binance Spot
tokocrypto-cli - CLI for Tokocrypto
kraken-cli - CLI for Kraken (Spot, Margin, Futures)
License
MIT
Disclaimer
This project is unofficial and is not affiliated with or endorsed by Indodax. Cryptocurrency trading is risky; review commands carefully before using write-capable API keys.
Available Tools
35 toolsaccount_infoB
[REQUIRES AUTH] Get account information including balances
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It mentions the auth requirement, which is a key behavioral trait, but does not disclose other aspects such as rate limits, return format, or side effects.
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 extremely concise, conveying the core purpose in one sentence. It is front-loaded with the auth requirement. While short, it is not wasteful.
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 is minimally adequate. It mentions 'including balances' but could clarify other aspects of account information or distinguish from sibling 'balance' 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?
There are no parameters, so the schema coverage is 100% vacuously. The description does not add parameter info, but none is needed. Baseline for 0 params is 4, and the description 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 specifies 'Get account information including balances', clearly indicating the verb and resource. It distinguishes from sibling tools like 'balance' by implying broader scope, though not explicitly differentiating.
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?
No usage guidelines are provided. The description does not mention when to use this tool over siblings like 'balance' or 'auth_show', nor does it specify any prerequisites beyond the auth requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_setB
Configure API credentials and callback URL
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | Indodax API key | |
| api_secret | Yes | Indodax API secret | |
| callback_url | No | Callback URL for WebSocket notifications (optional) | |
| test | No | Test credentials after saving |
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 says 'Configure' but never explains if this overwrites existing credentials, requires special permissions, or triggers any side effects like reconnection. The test parameter hints at validation, but it's not stated in the description.
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?
A single concise sentence that covers the core purpose. 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?
No output schema and no annotations. The description is minimal for a mutation tool that saves credentials. It does not explain what the response looks like or how to verify success, but for a simple setter it is barely adequate.
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 descriptions for all parameters. The description adds no additional meaning beyond summarizing the schema, earning a baseline 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 'Configure API credentials and callback URL' clearly states the action and resources involved. It distinguishes from sibling tools like auth_show (read) and auth_test (test) by focusing on configuration.
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?
No guidance on when to use this tool versus alternatives. It does not specify prerequisites, such as needing an account or prior setup, nor does it mention when not to use it (e.g., if credentials are already set).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_showB
Show current API configuration status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully convey behavior. It only says 'show' without indicating safety, read-only nature, or any side effects. Lacks detail on what configuration status entails.
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?
Single sentence, front-loaded, no wasted words. Efficiently conveys the core purpose.
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 zero parameters, no output schema, and no annotations, the description is extremely minimal. For authentication-related tool, it lacks details on output or prerequisites, leaving the agent underinformed.
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; schema coverage is 100%. Description adds value by stating the purpose, though it does not need to explain parameters. Baseline score of 4 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?
Description clearly states the action ('Show') and resource ('API configuration status'), distinguishing it from siblings like auth_set and auth_test. It is specific and non-tautological.
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?
No guidance on when to use this tool versus alternatives. Does not mention when not to use it or provide context for selection among many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_testA
Test if current API credentials are valid
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It states the tool tests credentials but does not disclose the return format or behavior (e.g., whether it throws errors or returns a boolean). This is adequate but not thorough.
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 a single, concise sentence that contains no extraneous information. Every word is necessary and earned.
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 absence of an output schema and annotations, the description should ideally explain what the tool returns. It does not, but the tool's simplicity (zero parameters, single purpose) makes this a minor gap. A score of 3 is appropriate.
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 tool has zero parameters, and the schema has 100% coverage (trivially). According to the baseline rule, 0 parameters earns a 4. The description adds no further semantic value, which is acceptable.
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 action ('test') and the resource ('current API credentials'), making the tool's purpose unambiguous. It is distinct from sibling tools like auth_set or account_info.
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?
No explicit guidance on when to use this tool versus alternatives, but the simplicity makes it self-evident. A score of 3 reflects the lack of explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
balanceB
[REQUIRES AUTH] Get wallet balances (non-zero only)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses auth requirement and non-zero filtering, but lacks details on return format, pagination, or limits. With no annotations, more behavioral context is expected.
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 concise phrases, front-loaded with key info. No waste.
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?
Simple tool with no params, but missing output schema and return structure. Adequate but could hint at response format.
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 defined, schema coverage 100%. Description adds nothing about parameters, but baseline for 0 params is 4.
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?
States 'Get wallet balances (non-zero only)' with a specific verb and resource. The non-zero qualifier adds clarity, but it doesn't explicitly distinguish from sibling tools like account_info.
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?
Only mentions auth requirement but provides no guidance on when to use this tool versus alternatives like paper_balance or account_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderB
[REQUIRES AUTH] Get order details by order ID
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order ID | |
| pair | Yes | Trading pair, e.g. btc_idr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only mentions auth requirement. It does not disclose whether the operation is read-only, destructive, or any side effects, rate limits, or error conditions.
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?
Very concise (one sentence) with the auth requirement front-loaded. However, it could be slightly more structured without becoming verbose, so not a full 5.
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 absence of an output schema, the description should explain the return content (order details). It does not, and with many sibling tools, more context would help differentiation. The description is insufficiently 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 description coverage is 100% with clear descriptions for both parameters. The description adds no additional meaning beyond what the schema already provides, justifying the baseline score 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 uses a specific verb 'Get' and resource 'order details by order ID', clearly distinguishing it from sibling tools like 'open_orders' or 'order_history' that list multiple 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?
No guidance on when to use this tool versus alternatives like 'open_orders' or 'order_history'. Lacks exclusion criteria or prerequisites beyond the generic auth requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ohlcB
Get OHLCV candle data
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Start timestamp (seconds) | |
| symbol | No | Trading pair symbol, e.g. BTCIDR | BTCIDR |
| timeframe | No | Candle timeframe in minutes, e.g. 60 | 60 |
| to | No | End timestamp (seconds) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description should disclose behavioral traits like typical data volume, response structure, or rate limits. It only states the generic function, leaving agents uninformed about important behaviors.
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 extremely concise at one sentence, which is efficient. However, it sacrifices completeness for brevity, earning a high but not top score.
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 tool has 4 parameters and no output schema or annotations, the description is insufficient. It fails to explain expected output format, pagination, or usage patterns, leaving agents underinformed.
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 covers all 4 parameters (100% coverage), so the description adds no extra meaning beyond the schema. 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 a specific action ('Get') on a specific resource ('OHLCV candle data'), distinguishing it from sibling tools like ticker or orderbook which provide different data types.
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?
No guidance is given on when to use this tool versus alternatives such as ticker for live prices or summaries for aggregated data. The description lacks context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_ordersC
[REQUIRES AUTH] List open orders
| Name | Required | Description | Default |
|---|---|---|---|
| pair | No | Filter by trading pair (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only notes that authentication is required. It does not disclose any behavioral traits such as pagination, rate limits, or how open orders are defined. The description carries the full burden but adds minimal value beyond stating the operation.
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 very short (one sentence with a tag), which is concise and front-loaded. However, it lacks structure and could benefit from additional context without becoming verbose.
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 that the tool has a single optional parameter, no output schema, and no annotations, the description is incomplete. It does not explain what data is returned (e.g., order details), ordering, or limitations. For an agent to correctly use this tool, more context is needed.
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 has 100% coverage for the single parameter 'pair', which includes a description. The tool description adds no additional semantic meaning beyond what the schema already provides. Thus, 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 'List open orders', specifying the verb and resource. While it is not explicitly differentiated from siblings like 'order_history' (which lists all orders), the context of sibling names provides some implied distinction.
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 '[REQUIRES AUTH]' but offers no guidance on when to use this tool versus alternatives (e.g., 'order_history' or 'get_order'). There is no mention of prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orderbookB
Get order book depth for a trading pair
| Name | Required | Description | Default |
|---|---|---|---|
| pair | No | Trading pair, e.g. btc_idr | btc_idr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It only says 'get order book depth', implying a read operation but omitting details like authentication requirements, rate limits, or potential latency. Insufficient for a tool with 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?
The description is a single sentence with no wasted words. It is front-loaded with the core action, but could be slightly more structured (e.g., including return value hint).
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 tool has only one optional parameter and no output schema, the description minimally explains the tool's purpose. However, it lacks information about what the returned depth data looks like (e.g., bids/asks structure), which would be helpful.
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 schema already provides a description for the 'pair' parameter ('Trading pair, e.g. btc_idr'). The description adds no additional meaning beyond the schema, so baseline 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 the verb 'get' and resource 'order book depth' for a trading pair. It is specific and distinct from sibling tools like account_info or ticker, making it easy for an AI agent to select.
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?
No guidance on when to use this tool versus alternatives (e.g., ticker for current price, trade_history for past trades). The description only states what it does, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_historyC
[REQUIRES AUTH] Get order history
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of orders to return | |
| symbol | No | Trading pair symbol, e.g. btc_idr | btc_idr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the auth requirement via '[REQUIRES AUTH]', which is useful. However, with no annotations, it fails to disclose other behavior like read-only nature, pagination, 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 very concise with a single sentence including the auth tag. It is front-loaded and has no unnecessary words, but lacks a structured breakdown.
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 description is incomplete for a list tool with no output schema. It omits output format, ordering, pagination, and user-scoping details, which are critical for correct invocation.
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 descriptions for both parameters. The tool description does not add meaning beyond the schema, so baseline 3 applies.
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 'Get order history' states the verb 'Get' and resource 'order history', which is clear. However, it does not specify the scope (e.g., own orders) or differentiate from siblings like trade_history or open_orders, making it ambiguous.
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 no guidance on when to use this tool versus alternatives. It only includes an auth requirement tag, but no context about scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pairsA
List all available trading pairs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist; description only says 'List all available trading pairs' without disclosing any behavioral traits such as authentication requirements, rate limits, or data freshness.
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?
Single, short sentence with no filler; information is front-loaded and efficient.
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, parameterless list tool with no output schema, the description is complete and sufficient; it fully conveys the tool's purpose.
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 present, so baseline score of 4 applies; description does not need to add parameter meaning.
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 lists all available trading pairs with a specific verb and resource, and no sibling tool overlaps with this function.
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?
No guidance provided on when to use this tool versus alternatives; lacks any usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_balanceA
Show current paper trading virtual balances
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description alone must disclose behavior. It only states the tool shows balances, with no mention of output format, side effects, or any other behavioral traits. For a simple read operation, this is minimal.
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 a single short sentence that is fully front-loaded with the key action and resource. No extraneous 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?
Given no output schema and no parameters, the description is adequate for understanding the basic purpose. However, it lacks details about the format or scope of the balances shown, which could be helpful for agents.
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 has zero parameters and 100% description coverage (no params to describe). Baseline is 4 as per guidelines; the description does not need to add parameter 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 'Show current paper trading virtual balances' uses a specific verb ('Show') and clearly identifies the resource ('paper trading virtual balances'). It distinguishes this tool from siblings like 'balance' (likely real balances) and other paper trading actions.
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?
No explicit guidance on when to use this tool versus alternatives. While the name implies it is for paper trading context, the description does not state when-not to use it or mention alternative tools like 'balance' for real accounts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_buyB
Place a simulated paper buy order (omit price for market order)
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Amount in base currency (alternative to idr) | |
| idr | No | IDR amount to spend (alternative to amount) | |
| pair | No | Trading pair, e.g. btc_idr | btc_idr |
| price | No | Price for the order (omit for market order) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. Beyond 'simulated', it does not disclose behavior for mutual exclusivity of amount/idr, error cases, or auth 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?
Single sentence with no redundancy. Efficient and front-loaded, but could be slightly more informative without bloating.
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?
No output schema and simple params, but description omits return values, error handling, and behavior when both amount and idr are provided. Incomplete for agent usage without trial.
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 descriptions for each parameter. Description adds value by clarifying price omission for market orders, but baseline is adequate.
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 it places a simulated paper buy order and distinguishes from market orders with the 'omit price' hint. It differentiates from sibling tools like paper_sell.
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?
Implies use for paper trading but lacks explicit when-to-use or when-not-to-use guidance. No mention of alternatives or context such as requiring prior paper_init.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_cancelB
Cancel a paper trading order
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order ID to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole source of behavioral info, but it reveals nothing about side effects, reversibility, or error conditions (e.g., cancelling a filled order). This is a significant gap.
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 a single concise sentence with no wasted words. It efficiently conveys the core purpose, though it could be expanded without losing conciseness.
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 is minimally adequate. However, it lacks details on return values or behavior after cancellation, leaving some context unaddressed.
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 order_id, so the schema already documents the parameter. The description adds no extra meaning beyond what is in the schema, warranting the baseline 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 action ('Cancel') and the resource ('a paper trading order'), making it distinct from sibling tools like paper_cancel_all (cancels all orders) and paper_buy (creates 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?
No guidance is provided on when to use this tool versus alternatives (e.g., paper_cancel_all) or on prerequisites like order status. The agent receives no contextual clues for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_cancel_allA
Cancel all paper trading orders
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the action. It does not disclose behavioral traits like destructiveness, effect on filled vs open orders, reversibility, or confirmation. A higher score would require more detail.
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 a single concise sentence with no wasted words. It directly communicates the core purpose without any extraneous 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?
The description is minimal but functional given the tool has no parameters and no output schema. However, it lacks detail on scope (e.g., open orders only?) and consequences, which is a gap for a potentially destructive action.
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 has zero parameters, so the description need not add parameter detail. Baseline is 4 per instructions, and the description adequately implies no configuration needed.
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 verb (Cancel) and resource (all paper trading orders), distinguishing it from 'paper_cancel' which cancels a single order. It is specific and unambiguous.
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?
No guidance is provided on when to use this tool vs alternatives like 'paper_cancel' for single orders, or 'paper_reset' for resetting state. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_check_fillsC
Auto-fill open paper orders based on current market prices
| Name | Required | Description | Default |
|---|---|---|---|
| fetch | No | Auto-fetch current market prices from Indodax API | |
| prices | No | JSON object of market prices, e.g. {"btc_idr": 100000000} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose behavioral traits such as whether it checks balances, creates trades, or modifies existing orders. The 'auto-fill' mechanism is not explained, leaving significant ambiguity.
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 a single, concise sentence that communicates the core functionality without extraneous detail. It is appropriately front-loaded.
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 lack of output schema and annotations, the description is too minimal. It omits important context such as return values, side effects, prerequisites (e.g., having open orders), and what happens if parameters are omitted.
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?
Both parameters have schema descriptions that explain their intent (fetch boolean and prices JSON). The description adds no extra meaning beyond the schema, but schema coverage is 100%, 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 the tool's purpose: auto-filling open paper orders based on current market prices. The verb 'auto-fill' and resource 'open paper orders' are specific and distinguish it from sibling tools like paper_fill, which likely does manual fills.
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 no guidance on when to use this tool versus alternatives like paper_fill or paper_cancel. No mention of prerequisites or scenarios where this tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_fillB
Fill an open paper order (provide order_id or set all=true)
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fill all open orders | |
| fetch | No | Auto-fetch current market prices from Indodax API | |
| order_id | No | Order ID to fill (optional if all=true) | |
| price | No | Fill price (defaults to order price) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention side effects (e.g., balance changes, order removal), required permissions, or error conditions. The term 'fill' implies execution but lacks depth.
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 a single, front-loaded sentence with no wasted words. It efficiently conveys the core purpose and primary parameters.
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 and no annotations, the description is insufficient. It does not explain return values, what happens when no orders are open, or the behavior when both order_id and all are provided. The tool's complexity warrants more detail.
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 the burden on the description is lower. The description adds marginal value by clarifying that order_id is optional when all=true, but this is already stated in the schema. No additional semantics 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 verb 'fill' and the resource 'open paper order'. It distinguishes from siblings like paper_buy (create) and paper_cancel (cancel) by specifying the action of filling an existing order.
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 basic usage guidance by listing two modes: 'provide order_id or set all=true'. However, it lacks explicit when-to-use or when-not-to-use guidance compared to alternatives, such as when to fill vs cancel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_historyB
Show paper trading order history
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states 'Show paper trading order history' without mentioning whether it requires prior initialization, the scope of history returned, or any side effects. This is insufficient for a tool in a complex environment.
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 extremely concise with a single sentence, which is efficient. However, it could be more informative without becoming verbose, e.g., by clarifying the scope of 'history'. Still, it earns a 4 for being well-structured and to the point.
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 tool has no parameters and no output schema, the description should provide enough context for the agent to understand its role. The current text is minimal and does not explain concepts like 'paper trading' or the type of order history (e.g., filled vs. cancelled). It is adequate but not thorough.
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 has zero parameters, so the description does not need to add parameter details. Baseline 4 is appropriate as the tool is parameterless and the schema coverage is 100%.
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 action ('Show') and the resource ('paper trading order history'), which distinctly identifies the tool's purpose. It is specific enough to differentiate from siblings like 'order_history' (likely live trades) and 'paper_orders' (current open 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?
The description provides no guidance on when to use this tool versus alternatives such as 'paper_orders' or 'order_history'. There are many sibling tools with overlapping functionality, but no context on selection criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_initB
Initialize paper trading with default or custom virtual balances
| Name | Required | Description | Default |
|---|---|---|---|
| btc | No | Initial BTC balance (default: 1.0) | |
| idr | No | Initial IDR balance (default: 100000000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like whether it overwrites existing state, requires prior steps, or returns a confirmation. It only says 'initialize' without clarifying side effects or idempotency.
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 a single concise sentence that immediately conveys the purpose. No extraneous 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?
For a simple initialization tool with two optional parameters and no output schema, the description covers the core function but lacks details on return values, error conditions, and behavior if already initialized.
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 both parameters described. The description adds 'default or custom' which is already implied by optional parameters, providing minimal additional value 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's purpose: initializing paper trading with virtual balances, either default or custom. It distinguishes from sibling paper tools like paper_buy or paper_balance, though it could be more explicit about the initialization process versus paper_reset.
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?
No guidance is provided on when to use this tool versus alternatives such as paper_reset or other paper trading tools. The description does not mention prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_ordersB
List paper trading orders
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states 'List paper trading orders.' It does not disclose whether this reads from a specific state, requires authentication, or has any side effects. The behavioral disclosure is minimal.
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?
A single, front-loaded sentence that is efficient and to the point. However, it could include more detail without becoming verbose, given the 0-parameter simplicity.
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 no output schema and no annotations, so the description should clarify what the return value is (e.g., a list of order objects, their fields). It only says 'list orders,' leaving ambiguity about the response structure.
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?
There are no parameters, and schema coverage is 100%. The description adds no parameter details but for 0 parameters the baseline is 4. It could still clarify what 'paper trading orders' means in terms of order types.
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 paper trading orders using a specific verb and resource. It distinguishes from siblings like paper_buy or paper_sell, but could be more precise about the scope (e.g., current vs historical).
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?
No guidance on when to use this tool vs alternatives like paper_history, open_orders, or order_history. The description does not mention conditions, prerequisites, or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_resetA
Reset paper trading state to defaults
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully explain behavior. It implies a destructive action without detailing irreversibility, impact on orders or balance, or side effects.
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?
Single sentence with no extraneous words, front-loaded with key verb and resource.
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 zero-parameter tool, description is minimal. Missing behavioral warnings or details about the reset's scope (e.g., balance, orders) makes it incomplete for safe usage.
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, so description cannot add parameter meaning. Baseline score of 4 is appropriate as the description is clear about the tool's sole action.
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 specific verb 'Reset' and resource 'paper trading state', and effectively distinguishes from siblings like paper_init and paper_buy by indicating it restores defaults.
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?
No guidance on when to use or avoid this tool relative to alternatives like paper_init. Lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_sellA
Place a simulated paper sell order (omit price for market order)
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount in base currency | |
| pair | No | Trading pair, e.g. btc_idr | btc_idr |
| price | No | Price for the order (omit for market order) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions 'simulated' but does not clarify side effects (e.g., impact on paper balance), whether the order is immediately filled, or if prior setup (paper_init) is needed. The description is too brief for a simulation tool.
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?
One sentence, no redundant information, and front-loaded with the core purpose. Every word is necessary.
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?
No output schema is provided, and the description does not mention return values (e.g., order ID). It also omits prerequisites like paper_init or whether the paper trading environment must be initialized. For a paper trading simulation, this is incomplete.
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 descriptions for all parameters. The description adds value by explaining that omitting 'price' results in a market order, which is not obvious from the schema alone. This clarifies the optional behavior.
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 action: place a simulated paper sell order, and specifies a key detail (omit price for market order). It distinguishes from sibling tools like paper_buy and paper_cancel.
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 some usage guidance (omit price for market order) but does not explicitly explain when to use this tool over alternatives like paper_buy or paper_cancel. No when-not or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_statusA
Show paper trading status summary (trades, balances, P&L)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It implies a read-only operation but does not disclose any behavioral traits like data freshness, side effects, or limitations. Adequate but minimal.
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?
Single sentence with no wasted words. 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?
For a tool with no parameters and no output schema, the description provides the core purpose. However, it lacks details on output format or any potential constraints, leaving some ambiguity for the 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?
No parameters (schema coverage 100%), baseline 4. Description adds value by explaining the tool's purpose beyond the empty 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?
Description clearly states verb 'Show' and resource 'paper trading status summary', listing specific components (trades, balances, P&L). This distinguishes it from siblings like paper_balance (balance only) and paper_history (history only).
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?
No guidance on when to use this tool vs alternatives such as paper_balance or paper_history. The description does not mention any exclusions or contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_incrementsA
Get price increments (tick sizes) for all pairs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden for behavioral disclosure. It merely states the action without mentioning any side effects, authentication needs, or data characteristics, which is insufficient for a parameterless tool.
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?
A single sentence that is directly front-loaded with the action and resource. No extraneous words; every part is essential.
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 tool's simplicity (no parameters, no output schema), the description sufficiently conveys what the tool returns. It could mention that the result is a list, but the core purpose is clear.
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 tool has zero parameters and 100% schema coverage. Baseline for 0 params is 4; the description adds no param-specific info but is not required to, making this 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 uses a specific verb 'Get' and clearly identifies the resource as 'price increments (tick sizes)' for 'all pairs'. This unambiguously states the tool's function and distinguishes it from sibling tools that handle other data types.
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 does not provide any guidance on when to use this tool versus alternatives or any prerequisites. It only states what it does, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_timeA
Get the current Indodax server time
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a read-only operation without side effects, which is correct. However, it does not disclose potential network latency, return format (e.g., Unix timestamp vs ISO string), or any error conditions. For a simple getter, this is minimally adequate but lacks depth.
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 a single, clear sentence. It is concise and front-loaded, containing no unnecessary words. Every word 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?
Given the tool has no parameters, no output schema, and a simple read operation, the description fully communicates its purpose. It is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is trivially 100%. The description adds no parameter details, which is appropriate. Per guidelines, a baseline of 4 applies for 0-parameter tools.
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 retrieves the current Indodax server time. It uses a specific verb ('Get') and resource ('current Indodax server time'), and is distinct from all sibling tools which focus on orders, balances, or trading actions.
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?
No explicit guidance on when to use this tool versus alternatives, but given its unique purpose (time retrieval) and lack of parameters, the usage context is implied. A more detailed guideline could mention it is useful for synchronizing actions or validating session expiry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summariesA
Get 24h and 7d market summaries for all pairs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits, but it only states a simple retrieval. It lacks information about data freshness, update frequency, rate limits, or any side effects. The tool's behavior is opaque beyond its basic function.
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 a single, well-structured sentence that front-loads key information. Every word contributes meaning—there is no redundancy or filler. It achieves clarity with minimal text.
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 tool has no parameters, output schema, or annotations, the description provides the essential purpose but lacks details on output structure, data source, or performance characteristics. For a simple tool, it is adequate but not comprehensive.
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 tool has no parameters (input schema is empty), so schema coverage is 100%. Per the rule for 0 parameters, baseline is 4. The description does not need to add parameter semantics, and it appropriately focuses on the tool's purpose.
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 retrieves 24-hour and 7-day market summaries for all pairs, specifying the verb 'Get', the resource 'market summaries', and the scope 'all pairs' with explicit time periods. This is specific and distinguishes it from sibling tools like ticker (single pair) or ticker_all (tickers without 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?
No guidance is provided on when to use this tool compared to alternatives such as ticker_all, ohlc, or ws_snapshot_summary. The description does not mention any prerequisites, limitations, or typical use cases, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tickerB
Get ticker for a trading pair
| Name | Required | Description | Default |
|---|---|---|---|
| pair | No | Trading pair, e.g. btc_idr | btc_idr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full burden. It lacks disclosure of authentication needs, rate limits, or output details (e.g., price, volume). Minimal 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?
Extremely concise single sentence with no wasted words. Front-loaded with key verb and object.
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 and no annotations, the description fails to explain what the ticker includes (e.g., bid, ask, volume) or how to handle errors. Incomplete for a new user.
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 the baseline is 3. The description adds no additional meaning beyond the schema's 'pair' definition.
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 action ('Get ticker') and the resource ('ticker for a trading pair'), distinguishing it from the sibling 'ticker_all' tool.
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?
No guidance on when to use this tool versus alternatives like 'ticker_all', 'orderbook', or 'summaries'. No context provided for use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ticker_allB
Get tickers for all trading pairs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavior. It only says 'Get tickers', omitting whether it is read-only, requires authentication, or has rate limits. The output format is not mentioned.
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 extremely concise with 5 words, front-loaded, and every word contributes meaning. 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?
Despite having no parameters, the description lacks details about the return value (e.g., what fields are included in 'tickers') and how it relates to sibling tools. For a simple tool, more context would improve completeness.
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?
There are no parameters, and the schema coverage is 100%. The rule for zero parameters sets a baseline of 4, which is appropriate given the trivial nature.
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 action ('Get') and resource ('tickers') with a scope ('for all trading pairs'), distinguishing it from a potential single-pair ticker tool. However, it does not explicitly differentiate from siblings like '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?
No guidance on when to use this tool versus alternatives, such as 'ticker' for a single pair or 'summaries' for market summaries. The usage is implied by the tool's name, but explicit advice is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_historyC
[REQUIRES AUTH] Get trade fill history
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of trades to return | |
| symbol | No | Trading pair symbol, e.g. btc_idr | btc_idr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description only notes '[REQUIRES AUTH]', which is a behavioral trait. With no annotations provided, the description carries full burden but fails to disclose read-only nature, pagination, or other side effects.
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 very short and front-loaded with the auth requirement. It earns its place but is not a full sentence, slightly reducing 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 sibling tools with similar purposes, the description lacks differentiation. No output schema exists, but the description does not explain return format or behavior, leaving gaps.
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 the schema already describes both parameters adequately. The description adds no additional parameter meaning.
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 states 'Get trade fill history' which is a clear verb+resource. However, it does not differentiate from sibling tools like 'order_history', 'trans_history', and 'trades', which could cause confusion.
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?
No guidance on when to use this tool versus alternatives. Lacks context such as prerequisites or conditions for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tradesC
Get recent trades for a trading pair
| Name | Required | Description | Default |
|---|---|---|---|
| pair | No | Trading pair, e.g. btc_idr | btc_idr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description fails to disclose important behavioral details such as what 'recent' means (time frame, count), pagination, or any limits or side effects. Leaves agent uncertain about scope.
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?
Single sentence of 7 words is extremely concise, but it omits necessary details, making it under-specified rather than efficiently complete. Conciseness without completeness reduces effectiveness.
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 tool's simplicity (one parameter, no output schema) and lack of annotations, the description is too minimal. It does not explain output format, limits, or how it differs from related tools, leaving gaps for the 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?
Schema coverage is 100% with a single parameter 'pair'. Description reinforces the parameter's meaning but does not add additional semantics beyond what the schema provides. Baseline score justified.
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 verb 'Get', resource 'recent trades', and context 'for a trading pair'. However, it does not differentiate from sibling tool 'trade_history', which likely serves a similar 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?
No guidance on when to use this tool versus alternatives like 'trade_history', 'orderbook', or 'ohlc'. Missing context for selecting the appropriate tool among many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trans_historyA
[REQUIRES AUTH] Get deposit and withdrawal transaction history
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the auth requirement, which is a behavioral trait, but does not mention other characteristics like rate limits, side effects, or return behavior. With no annotations, additional details would be beneficial.
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 a single sentence, front-loading the auth requirement, and contains 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?
Without an output schema, the description should explain what the response contains or any constraints. It only states the purpose, leaving out details on data format, pagination, or time range that would help an AI 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?
There are zero parameters, so the description is not required to add parameter information. The baseline score of 4 applies as no additional details are needed.
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 the action 'Get' and the resource 'deposit and withdrawal transaction history', distinguishing it from sibling tools like trade_history or order_history.
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 a prerequisite '[REQUIRES AUTH]' but offers no explicit guidance on when to use this tool versus alternatives such as trade_history or order_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_snapshot_bookA
Get current order book snapshot via WebSocket
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Trading pair, e.g. btc_idr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description gives minimal behavioral context. It does not state whether the snapshot is a one-time retrieval or persistent subscription, or any connection/authentication prerequisites.
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 a single, concise sentence with no superfluous information. Every word contributes to understanding the tool's purpose.
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 simplicity (1 param, no output schema), the description is minimally adequate. However, it could be improved by noting that the snapshot is a one-time retrieval or by mentioning the expected output format.
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 covers 100% of parameters, with a clear description for 'pair'. The description adds no further meaning beyond the schema, so baseline score 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 'Get current order book snapshot via WebSocket' clearly states the action (get snapshot) and resource (order book), and the WebSocket method distinguishes it from sibling tools like 'orderbook' (likely REST).
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 via WebSocket for real-time data but does not explicitly specify when to choose this over the 'orderbook' sibling tool or other snapshot tools. No alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_snapshot_summaryA
Get 24h summary snapshots for all pairs via WebSocket
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It discloses the data type (24h summary snapshots) and channel (WebSocket), but does not specify return format, frequency, connection behavior, or side effects. It is a read operation but not explicitly stated.
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?
Single sentence, front-loaded with key info (verb, resource, scope, channel). Every word earns its place with no waste.
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, no output schema, and no annotations, the description is minimal. It conveys the basic function but lacks details on return value structure or WebSocket usage pattern. Sibling tools imply similar complexity, so more context would be helpful.
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, schema coverage 100%. The description adds meaning beyond the empty schema by specifying the scope (all pairs, 24h), which is sufficient for a parameterless tool.
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 verb 'Get', the resource '24h summary snapshots', the scope 'all pairs', and the channel 'via WebSocket'. This distinguishes it from sibling tools like 'summaries' (likely REST) and other ws_snapshot tools.
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?
No explicit guidance on when to use this tool vs alternatives. It mentions WebSocket, implying real-time/streaming use, but lacks exclusion criteria or comparison with siblings like ws_snapshot_book or summaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_snapshot_tickerA
Get a real-time price snapshot via WebSocket (faster than REST)
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Trading pair, e.g. btc_idr |
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 mentions 'real-time price snapshot via WebSocket' but does not clarify whether this is a one-time request or a subscription, nor does it disclose connection management, auth requirements, or rate limits. The behavior is ambiguous.
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 a single concise sentence that front-loads the key purpose and speed advantage. 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?
Given the simple single-parameter nature and no output schema, the description is adequate but falls short on explaining WebSocket-specific behavior (e.g., connection lifecycle, return format). More detail would improve agent decision-making.
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% with an example for the 'pair' parameter. The description does not add new information beyond the schema, achieving the baseline score.
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 verb 'Get', the resource 'price snapshot', and the distinguishing method 'via WebSocket (faster than REST)'. It effectively differentiates from siblings like 'ticker' (likely REST) and 'ws_snapshot_book'/'ws_snapshot_summary' (other WebSocket snapshots).
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 using WebSocket for speed advantage but lacks explicit guidance on when to use this tool vs alternatives like 'ticker' or when to avoid it. It does not provide context for selection among sibling WebSocket snapshot tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_tokenB
Generate a WebSocket token for external streaming clients
| Name | Required | Description | Default |
|---|---|---|---|
| private | No | Generate private token (requires auth) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It only states the action (generate) without mentioning side effects, authentication requirements beyond the param hint, or whether the operation is safe. The agent lacks critical context about what happens when the token is generated.
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 a single, front-loaded sentence with no waste. Every word contributes to the purpose. It is optimally concise for the simple tool.
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 tool's simplicity (one optional parameter, no output schema), the description provides the minimum viable context. However, it does not explain what the return value is or how the token should be used, which would be helpful 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?
Schema description coverage is 100% (the single parameter 'private' is fully described in the schema). The tool description adds no extra meaning to the parameter beyond what the schema already provides. 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 the tool's function: 'Generate a WebSocket token for external streaming clients'. The verb 'Generate' and resource 'WebSocket token' are specific, and it distinguishes from sibling tools like 'ws_snapshot_book' which are about snapshots, not token generation.
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?
No guidance is provided on when to use this tool versus alternatives. The description does not mention scenarios where it should or should not be used, nor does it refer to sibling tools for context. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clear and distinct purpose, with paper trading tools prefixed with 'paper_', auth tools with 'auth_', WebSocket tools with 'ws_', and market data tools named descriptively. Overlap is minimal.
All tools use snake_case with consistent prefixes for different contexts (paper_, auth_, ws_) and no mixing of styles. Verbs and nouns are descriptive and predictable.
35 tools is high for a trading server, covering both live and paper trading plus multiple data endpoints. While each tool seems justified, the count is borderline heavy and could be streamlined.
Critical gaps exist: no live order placement (buy/sell) or cancellation, only paper trading actions. The server lacks core trading functionality, making it incomplete for its stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Kraken keyless public market: time, status, assets, pairs, ticker, OHLC, depth, trades.
Bitstamp keyless public market: ticker, orderbook, transactions, OHLC, trading pairs.
Binance - 340 tools for market data, order books, and trading pairs
Gemini Exchange keyless public market: symbols, ticker, candles, book, trades, price feed.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis server provides a robust interface for Binance spot trading operations, including secure management of API credentials, execution and management of spot orders, and monitoring of account balances and open orders.2114MIT
- FlicenseNot gradedqualityDmaintenanceExposes Indodax's Private and Public REST APIs as MCP tools, enabling AI agents to manage cryptocurrency trading and account information. It supports tasks like checking market prices, viewing account balances, and executing or canceling buy and sell orders.
- AlicenseBqualityDmaintenanceProvides market data from Derive.xyz, allowing users to query currencies, instruments, tickers, and historical price information. This server enables access to real-time and historical financial data through the Derive public REST API with no authentication required.1517MIT
- FlicenseNot gradedqualityBmaintenanceMCP server exposing Indonesia Stock Exchange (IDX) market data as tools — fundamentals, broker flow, company profiles, and technical analysis via TA-Lib.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ibidathoillah/indodax-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server