Upbit MCP Server
The Upbit MCP Server enables interaction with the Upbit cryptocurrency exchange, providing comprehensive market data access and trading capabilities.
Public Tools (no authentication required):
Retrieve latest ticker data for specified markets
Fetch orderbook snapshots
Access recent trade histories
Private Tools (requires API keys and UPBIT_ENABLE_TRADING=true):
Account Management: Get account balances
Order Management: Create, list, cancel, and retrieve specific order details with filtering options (market, state, pagination)
Withdrawal Operations: List withdrawal addresses, initiate withdrawals, retrieve withdrawal details and history, cancel withdrawals
Deposit Operations: Check deposit possibilities, generate and retrieve deposit addresses, list deposit history
Security: Uses Upbit JWT authentication with API key requirements and IP allowlisting for secure access to private functions.
Provides access to real-time ticker data, orderbook snapshots, and trading operations for Bitcoin (KRW-BTC) on the Upbit exchange.
Enables access to market data, account balances, and order execution for Ethereum (KRW-ETH) on the Upbit platform.
Allows retrieval of real-time ticker data and recent trade history for XRP (KRW-XRP) on the Upbit exchange.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Upbit MCP Serverwhat's the current price of Bitcoin in KRW?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π Upbit MCP Server
π Overview
Fast MCP server for interacting with Upbit, South Korea's largest cryptocurrency exchange. This server provides comprehensive access to public market data and optional private trading tools including order management, deposits, and withdrawals.
By implementing the Model Context Protocol (MCP), this server allows Large Language Models (LLMs) to access real-time ticker data, orderbooks, trade history, and execute trading operations directly through their context window.
Related MCP server: Bithumb MCP Server
β¨ Features
Public Market Data: Access real-time ticker data, orderbook snapshots, and recent trades for any Upbit market.
Account Management: View account balances and positions (requires API key).
Order Management: Create, query, and cancel orders with support for limit, market, and price order types.
Deposit Operations: Check deposit eligibility, create deposit addresses, and track deposit history.
Withdrawal Operations: Create withdrawals, manage withdrawal addresses, and track withdrawal history.
π¦ Installation
π Using npx (Recommended)
To use this server without installing it globally:
npx @iqai/mcp-upbitπ§ Build from Source
git clone https://github.com/IQAIcom/mcp-upbit.git
cd mcp-upbit
pnpm install
pnpm run buildβ‘ Running with an MCP Client
Add the following configuration to your MCP client settings (e.g., claude_desktop_config.json).
π Minimal Configuration (Public Data Only)
{
"mcpServers": {
"upbit": {
"command": "npx",
"args": ["-y", "@iqai/mcp-upbit"],
"env": {
"UPBIT_SERVER_URL": "https://api.upbit.com"
}
}
}
}βοΈ Full Configuration (With Trading Enabled)
{
"mcpServers": {
"upbit": {
"command": "npx",
"args": ["-y", "@iqai/mcp-upbit"],
"env": {
"UPBIT_SERVER_URL": "https://api.upbit.com",
"UPBIT_ACCESS_KEY": "your_access_key_here",
"UPBIT_SECRET_KEY": "your_secret_key_here",
"UPBIT_ENABLE_TRADING": "true"
}
}
}
}π Configuration (Environment Variables)
Variable | Required | Description | Default |
| No | Upbit API server URL |
|
| For trading | Your Upbit API access key | - |
| For trading | Your Upbit API secret key | - |
| For trading | Enable private trading tools |
|
π Where to Get Upbit API Keys
Create an account on Upbit if you don't already have one
Go to the Upbit Developer Center
Create a new API key
Set appropriate permissions (read, trade, withdraw as needed)
Store your API keys in the environment variables
π Security & Permissions
Keep your
UPBIT_SECRET_KEYprivate and IP-allowlist your server in Upbit.Set
UPBIT_ENABLE_TRADING=trueonly when you intend to place/cancel orders or create withdrawals/deposit addresses.Upbit permission mapping:
Orders: create/cancel β μ£Όλ¬ΈνκΈ°, query/list β μ£Όλ¬Έμ‘°ν
Accounts/balances β μμ°μ‘°ν
Withdrawals: create/cancel β μΆκΈνκΈ°, query/list/address list β μΆκΈμ‘°ν
Deposits: create deposit address β μ κΈνκΈ°, query/list/chance/address read β μ κΈμ‘°ν
Documentation:
π‘ Usage Examples
π Market Data
"What is the current price of Bitcoin on Upbit (KRW-BTC)?"
"Show me the orderbook for Ethereum (KRW-ETH)."
"Get the recent trades for XRP (KRW-XRP)."
πΌ Account & Orders (Requires API Key)
"What are my current account balances?"
"Place a limit buy order for 0.01 BTC at 50,000,000 KRW."
"Cancel my pending order with UUID xyz123."
"Show me my open orders for KRW-BTC."
π³ Deposits & Withdrawals (Requires API Key)
"Create a deposit address for BTC."
"List my recent deposits."
"Withdraw 1 ETH to my wallet address."
"Check the status of my withdrawal."
π οΈ MCP Tools
CANCEL_ORDER
Cancel an existing Upbit order (requires private API)
Parameter | Type | Required | Description |
| string | β |
CANCEL_WITHDRAWAL
Cancel a digital asset withdrawal by UUID (requires private API)
Parameter | Type | Required | Description |
| string | β |
CREATE_DEPOSIT_ADDRESS
Request creation of a deposit address (requires private API)
Parameter | Type | Required | Description |
| string | β | |
| string | β |
CREATE_ORDER
Create an Upbit order (requires private API)
Parameter | Type | Required | Description |
| string | β | |
| string | β | |
| string | β | |
| string | ||
| string | ||
| string | ||
| string | ||
| string |
CREATE_WITHDRAWAL
Request a digital asset withdrawal (requires private API)
Parameter | Type | Required | Description |
| string | β | |
| string | β | |
| string | β | |
| string | β | |
| string | ||
| string |
GET_ACCOUNTS
Get Upbit account balances (requires private API enabled)
No parameters
GET_DEPOSIT
Get a single deposit by UUID (requires private API)
Parameter | Type | Required | Description |
| string | β |
GET_DEPOSIT_ADDRESS
Get a single deposit address for a currency and net_type (private)
Parameter | Type | Required | Description |
| string | β | |
| string | β |
GET_DEPOSIT_CHANCE
Get deposit availability information for a currency (private)
Parameter | Type | Required | Description |
| string | β | |
| string |
GET_ORDER
Get a single Upbit order (requires private API)
Parameter | Type | Required | Description |
| string | ||
| string |
GET_ORDERBOOK
Get orderbook snapshot for a given market
Parameter | Type | Required | Description |
| string | β | Upbit market code, e.g., KRW-BTC |
GET_ORDERS
List Upbit orders (requires private API)
Parameter | Type | Required | Default | Description |
| string | |||
| string | "wait" | ||
| integer | 1 | ||
| integer | 100 |
GET_TICKER
Get the latest ticker data from Upbit for a single market
Parameter | Type | Required | Description |
| string | β | Upbit market code, e.g., KRW-BTC |
GET_TRADES
Get recent trades for a market
Parameter | Type | Required | Description |
| string | β | Upbit market code, e.g., KRW-BTC |
GET_WITHDRAWAL
Get a single withdrawal by UUID (requires private API)
Parameter | Type | Required | Description |
| string | β |
LIST_DEPOSIT_ADDRESSES
List deposit addresses for all currencies (requires private API)
No parameters
LIST_DEPOSITS
List deposits (requires private API)
Parameter | Type | Required | Default | Description |
| string | |||
| string | |||
| integer | 1 | ||
| integer | 50 |
LIST_WITHDRAWAL_ADDRESSES
List registered withdrawal-allowed addresses (requires private API)
No parameters
LIST_WITHDRAWALS
List withdrawals (requires private API)
Parameter | Type | Required | Default | Description |
| string | |||
| string | |||
| integer | 1 | ||
| integer | 50 |
π¨βπ» Development
ποΈ Build Project
pnpm run buildποΈ Development Mode (Watch)
pnpm run watchβ Linting & Formatting
pnpm run lint
pnpm run formatπ§ͺ Testing with MCP Inspector
pnpm run build
npx @modelcontextprotocol/inspector node dist/index.jsπ Project Structure
src/tools/: Individual tool definitionssrc/lib/: Configuration, HTTP client, and authentication utilitiessrc/index.ts: Server entry point
π Resources
β οΈ Disclaimer
This project interacts with the Upbit cryptocurrency exchange API. Trading in cryptocurrencies involves significant risk. Users should exercise caution and verify all data independently. The authors are not responsible for any financial losses incurred through the use of this software.
π License
Available Tools
19 toolsCANCEL_ORDERB
Cancel an existing Upbit order (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Only mentions 'requires private API'. No disclosure of effects (e.g., irreversible, potential fees, or status changes). With no annotations, more detail is needed.
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 is efficient and front-loaded. Could include more detail without being verbose, but still concise.
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?
Adequate for a simple tool with one parameter and no output schema, but lacks behavioral and usage context. Cannot fully compensate for missing annotations.
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 has 0% description coverage. The description does not explain that 'uuid' is the order identifier. While inferable, it adds no value beyond the schema 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?
Clearly states the verb 'Cancel' and resource 'existing Upbit order', distinguishing it from siblings like CREATE_ORDER and GET_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?
No guidance on when to use or alternatives. Does not mention prerequisites like order state (e.g., must not be already canceled) or context for when cancellation is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
CANCEL_WITHDRAWALB
Cancel a digital asset withdrawal by UUID (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It reveals the need for private API access but omits critical behavioral traits: whether cancellation is immediate, if funds are returned, if it is irreversible, 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?
Single sentence, directly front-loaded with action and resource. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low schema coverage and no output schema, the description is minimal. It lacks details on success/failure responses, idempotency, or side effects, which are important for a financial operation.
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 0%. The description only reiterates 'by UUID' without adding format, source, or constraints. The uuid parameter remains under-documented.
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'), the resource ('digital asset withdrawal'), and the identifier ('by UUID'). It distinguishes from sibling tool CANCEL_ORDER by specifying 'digital asset withdrawal'.
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 mentions 'requires private API' hinting at authentication, but does not define when to use this tool versus alternatives like reversing a deposit or modifying an order. Usage is implied but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
CREATE_DEPOSIT_ADDRESSC
Request creation of a deposit address (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | ||
| net_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral traits. It states the tool is a creation action requiring private API, but fails to disclose potential side effects (e.g., whether it overwrites existing addresses), rate limits, or what happens on failure. This is insufficient for safe agent invocation.
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 of 8 words, front-loading the core action. While efficient, it sacrifices necessary detail; a slightly longer description would improve completeness without sacrificing 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?
Given no output schema and no annotations, the description fails to provide adequate context. It does not explain the return value, error conditions, or any constraints beyond the private API requirement. The two parameters are also left undocumented, making the tool under-specified.
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 0%, meaning the input schema provides no parameter descriptions. The tool description does not compensate: it omits any explanation of the 'currency' and 'net_type' parameters, such as allowed values, formats, or examples. This leaves the agent unable to construct valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it requests creation of a deposit address, matching the verb and resource. It distinguishes itself from sibling tools like GET_DEPOSIT_ADDRESS and LIST_DEPOSIT_ADDRESSES by indicating it creates rather than retrieves. However, it could be more explicit about its specific role in the deposit workflow.
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 notes 'requires private API' but provides no guidance on when to use this tool versus alternatives like GET_DEPOSIT_ADDRESS or LIST_DEPOSIT_ADDRESSES. There is no mention of prerequisites, limitations, or when not to use it, 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.
CREATE_ORDERC
Create an Upbit order (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | ||
| side | Yes | ||
| ord_type | Yes | ||
| volume | No | ||
| price | No | ||
| time_in_force | No | ||
| smp_type | No | ||
| identifier | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool requires a private API, which is a behavioral note. However, it lacks details on side effects, error handling, rate limits, or whether the order creation is synchronous. For a mutation tool, this is insufficient.
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 (one sentence), but at the expense of informativeness. It is under-specified and does not earn its place by providing crucial details.
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 8 parameters, no output schema, and no annotations, the description is woefully incomplete. It fails to explain return values, required fields beyond the schema, or behavioral nuances.
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 description does not mention any parameters, despite 8 parameters in the schema with 0% coverage. It adds no meaning beyond the tool name, leaving the agent to rely solely on the input schema, which is minimal.
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 (Create) and resource (Upbit order), distinguishing it from siblings like CANCEL_ORDER or CREATE_WITHDRAWAL. The mention of 'requires private API' adds context, making the purpose immediately understandable.
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., when to use limit vs market order). The only usage hint is that it requires a private API, but there is no mention of prerequisites or situational context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
CREATE_WITHDRAWALC
Request a digital asset withdrawal (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | ||
| amount | Yes | ||
| address | Yes | ||
| net_type | Yes | ||
| secondary_address | No | ||
| transaction_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The only behavioral note is 'requires private API', which is authentication-related. It does not disclose that the withdrawal is destructive (funds moved), irreversible, or requires confirmations. Annotations are absent, so the description fails to provide critical safety information.
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, but it is under-specified rather than concise. It omits essential details, so brevity comes at the expense of usefulness. The structure provides no front-loaded key points beyond the title.
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 6 parameters, no output schema, no annotations, and siblings handling withdrawal lifecycle, the description is grossly incomplete. It does not mention success/error responses, processing time, or constraints. An agent cannot reliably invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds no parameter explanations. With 6 parameters (4 required), an agent needs semantics for currency, amount, address, net_type, etc. The description is entirely silent, making parameter invocation guesswork.
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 identifies the action as requesting a withdrawal, but is vague. It does not specify the type of digital asset or the context beyond 'requires private API', which is more authentication info than purpose. It avoids tautology but lacks specificity.
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 siblings like CANCEL_WITHDRAWAL. The description mentions 'requires private API' but does not clarify prerequisites or scenarios. An agent has no context to decide between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_ACCOUNTSA
Get Upbit account balances (requires private API enabled)
| 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 carries full burden. It discloses the requirement for private API access, but does not mention other behavioral traits like rate limits, data freshness, or error handling. The read-only nature is implied but not explicit.
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 unnecessary words. It delivers the essential information efficiently.
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 no parameters and no output schema, the description explains the purpose but does not specify the return format or structure. The agent may need additional context to interpret the response.
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 schema coverage is 100% trivially. The description adds no parameter details because none are needed. Baseline 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 verb 'Get' and resource 'account balances' for the Upbit platform. It distinguishes from sibling tools like GET_TICKER or GET_ORDERBOOK, which deal with market data, not account balances.
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?
Includes the prerequisite 'requires private API enabled', which guides when the tool can be used. However, it does not explicitly state when to use this tool versus alternatives, though no direct alternatives exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_DEPOSITA
Get a single deposit by UUID (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description states it requires private API (auth needed), but does not explicitly confirm read-only nature or mention any side effects, rate limits, or pitfalls. 'Get' implies read but could be more explicit.
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 conveys essential purpose and access requirement with zero wasted words. Optimal conciseness for a simple retrieval 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?
Adequate for a simple single-resource retrieval, but missing output schema and description does not hint at return structure. Agent may need to infer response contains deposit details. Fairly complete given low complexity.
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 has 0% description coverage for the uuid parameter. Description adds 'by UUID' which is already clear from name. No additional semantics like format, example, or special constraints beyond minLength.
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 action (Get), object (deposit), and identifier (UUID). Distinguishes from sibling LIST_DEPOSITS (list) and GET_DEPOSIT_ADDRESS (address). Mention of 'requires private API' adds important context.
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 usage when a single deposit UUID is available, but provides no explicit guidance on when to use this vs alternatives like GET_DEPOSIT_CHANCE or LIST_DEPOSITS. No exclusions or higher-level context given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_DEPOSIT_ADDRESSC
Get a single deposit address for a currency and net_type (private)
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | ||
| net_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits beyond the obvious read operation. The parenthetical '(private)' is ambiguous and does not clarify side effects, permissions, 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 at one sentence, which is efficient. However, it sacrifices clarity for brevity, missing opportunities to front-load key usage details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should indicate what the tool returns (e.g., an address string). It also lacks context on how this fits with siblings like GET_DEPOSIT or GET_ACCOUNTS, making the tool less discoverable.
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 description mentions 'currency' and 'net_type (private)' but provides no additional meaning beyond the schema names. With 0% schema coverage, the description fails to explain valid values or formats, leaving the agent to guess.
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 'Get a single deposit address' with specific parameters 'currency and net_type'. This distinguishes it from LIST_DEPOSIT_ADDRESSES which lists multiple addresses. However, it does not explain what a deposit address is, leaving some ambiguity.
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 like CREATE_DEPOSIT_ADDRESS or LIST_DEPOSIT_ADDRESSES. The context of 'private' net_type is unclear, and there is no mention of prerequisites or when to prefer this over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_DEPOSIT_CHANCEC
Get deposit availability information for a currency (private)
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | ||
| net_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits such as whether this is a read-only operation, required permissions, rate limits, or side effects. The term '(private)' hints at access restrictions but lacks clarity.
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 that is front-loaded with the core action, but it is overly terse and sacrifices necessary detail. It earns its place but could be expanded 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 the lack of output schema and annotations, the description fails to cover return values, error handling, or how 'availability information' is structured. Context with sibling tools is not leveraged to clarify 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?
Schema description coverage is 0%, yet the description adds no explanation for the two parameters ('currency' and 'net_type'). It does not clarify their formats, allowed values, or purpose beyond what the schema fields imply.
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 identifies the tool as retrieving deposit availability information for a currency, with the '(private)' qualifier. It specifies the resource ('deposit availability') and differentiates from other deposit tools like LIST_DEPOSITS or GET_DEPOSIT, though the term 'chance' remains somewhat 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?
No guidance is provided on when to use this tool versus sibling tools like GET_DEPOSIT or LIST_DEPOSITS. The description lacks any context about prerequisites, alternatives, or conditions when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_ORDERC
Get a single Upbit order (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | No | ||
| identifier | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions privacy requirement but does not disclose whether it is read-only, idempotent, error behavior, or rate limits. Minimal information beyond the basic purpose.
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 but under-specified for a tool with no parameter documentation. It front-loads the verb but sacrifices necessary detail; it is too terse to be effective.
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 two undocumented parameters, no output schema, and no annotations, the description provides insufficient context for correct invocation. The agent cannot infer parameter meaning, return format, or error scenarios.
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 0% and the description does not explain the two parameters (uuid, identifier). Their roles and usage are entirely ambiguous, forcing the agent to guess or rely on external knowledge.
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 'single Upbit order', and the requirement for private API. It is distinct from siblings like GET_ORDERS (plural) but could more explicitly differentiate from other single-resource tools like GET_DEPOSIT.
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 a prerequisite (private API) but lacks explicit guidance on when to use this tool versus alternatives like GET_ORDERS for listing or CANCEL_ORDER for modification. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_ORDERBOOKB
Get orderbook snapshot for a given market
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | Upbit market code, e.g., KRW-BTC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It fails to explain what 'snapshot' entails (e.g., depth, aggregation, top levels). No mention of data freshness, rate limits, or whether it's a full or partial orderbook.
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 extraneous words. It is appropriately sized but could benefit from slightly more context 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?
Given no output schema, the description should explain what the response contains (e.g., bids, asks, depth level). It is incomplete as a market data tool, lacking details on format or content.
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 the parameter description already containing an example. The tool description adds no additional meaning beyond what the schema provides, meeting the baseline.
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 ('orderbook snapshot') with the required parameter ('market'). It distinguishes from siblings like GET_ORDER, GET_ORDERS, and GET_TRADES which serve different purposes.
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. The description does not mention context such as real-time vs historical, or comparison to GET_TRADES or GET_TICKER.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_ORDERSC
List Upbit orders (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | ||
| state | No | wait | |
| page | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only mentions that the tool requires a private API, implying authentication. No annotations are present, so the description should disclose behavioral traits such as pagination, rate limits, or state filtering behavior, which are absent.
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 brief (one sentence) and front-loaded with the primary action. While concise, it is under-specified for a tool with 4 parameters and no output schema, making it less useful.
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 complexity (4 parameters, no annotations, no output schema), the description is incomplete. It lacks details on filtering, pagination, and return structure, which are essential for correct 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?
With 0% schema description coverage, the description should explain the parameters (market, state, page, limit). It does not mention any parameter meaning, default values, or usage. The agent must rely solely on the parameter names and enums, which is insufficient.
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 'List' and resource 'Upbit orders', indicating it retrieves a list of orders. It also notes that a private API key is required, which differentiates it from public endpoints. However, it does not specify whether it lists open orders, order history, or all types, which could add clarity.
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 like GET_ORDER (single order), CANCEL_ORDER, or CREATE_ORDER. There is no mention of use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_TICKERB
Get the latest ticker data from Upbit for a single market
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | Upbit market code, e.g., KRW-BTC |
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 simply says 'Get' without clarifying that it is a read-only, non-destructive operation. No mention of rate limits, data freshness, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence that is front-loaded and contains no extraneous 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 no output schema and no annotations, the description is minimal. It does not describe return values (e.g., price, volume) or pagination behavior, but the tool name and standard ticker format partly compensate. Adequate but could be more informative.
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 the 'market' parameter already documented with an example. The description reinforces 'for a single market' but adds no new semantic detail beyond the schema. Baseline of 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 states 'Get the latest ticker data from Upbit for a single market', clearly identifying the verb (get), resource (ticker data), and scope (single market). It is distinct from siblings like GET_ORDERBOOK or GET_TRADES, though it could be more explicit about what 'ticker data' includes.
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., for multiple markets you would need multiple calls). No exclusions or context provided about prerequisites or suitable scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_TRADESC
Get recent trades for a market
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | Upbit market code, e.g., KRW-BTC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits such as pagination, recency limits, or rate limiting. The agent has no information about side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but lacks sufficient detail to be fully effective. It is front-loaded but does not earn its place by adding value beyond the bare minimum.
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 of the tool (single required parameter, no output schema), the description is minimally complete. It lacks details on output format, pagination, and fields returned, which are important for a trading data tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the market parameter. The tool description adds no additional meaning beyond the schema, so 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 verb 'Get' and resource 'recent trades for a market'. It distinguishes from siblings like GET_ORDERBOOK and GET_TICKER by specifying trades rather than order book or ticker. However, it could be more specific about the scope (e.g., public market data vs user-specific).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like GET_TICKER or GET_ORDERBOOK. Lacks context for when it is appropriate or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GET_WITHDRAWALB
Get a single withdrawal by UUID (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only mentions 'requires private API' but does not disclose whether the operation is read-only, what happens on error (e.g., invalid UUID), or any rate limits. This is insufficient for a tool that likely queries sensitive data.
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 a key constraint (private API).
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 that retrieves a single withdrawal, the description lacks any hint about the return value or output structure. Without an output schema, the agent cannot infer what data will be provided. Error handling or prerequisite details are also missing, making the description incomplete for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (uuid) with no description (0% coverage). The description mentions 'by UUID' but does not explain what constitutes a valid UUID or its format. Given the low schema coverage, the description partially compensates but adds limited semantic value.
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'), the resource ('withdrawal'), and the identifier ('by UUID'). It also notes a requirement ('requires private API'). This distinguishes it from sibling tools like LIST_WITHDRAWALS and CREATE_WITHDRAWAL.
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 mentions that the tool requires a private API, implying authentication context. However, it does not explicitly state when to use it versus alternatives (e.g., LIST_WITHDRAWALS for all withdrawals). The context from sibling names offers some guidance, but the description itself lacks explicit usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
LIST_DEPOSIT_ADDRESSESA
List deposit addresses for all currencies (requires private API)
| 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 carries full burden. It only states it lists addresses and requires private API, without disclosing behaviors like whether it returns active/inactive addresses, rate limits, or error scenarios. Minimal disclosure.
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-loaded with the action and resource. No wasted words; every part serves a 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 no parameters and no output schema, the description provides the essential context but lacks details on return format, pagination, or edge cases. Adequate but not enriched.
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% schema coverage (trivially). The description adds no parameter information because none exist. Baseline 3 applies as per guidelines for high schema coverage.
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 deposit addresses for all currencies, with a specific verb ('List') and resource ('deposit addresses'). It distinguishes from siblings like GET_DEPOSIT_ADDRESS (singular) and LIST_DEPOSITS (deposits, not addresses).
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 mentions 'requires private API' indicating authentication need, but does not explicitly explain when to use this tool versus alternatives like GET_DEPOSIT_ADDRESS. Usage context is implied but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
LIST_DEPOSITSC
List deposits (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | ||
| state | No | ||
| page | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It mentions 'requires private API' (authentication), but omits whether the operation is read-only, pagination behavior, rate limits, 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 short and front-loaded, but the extreme brevity sacrifices essential details, making it incomplete rather than concise.
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 0% schema coverage, no output schema, and 4 parameters, the description is grossly insufficient. It does not explain what deposits are listed, filtering, pagination, or output 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?
Schema description coverage is 0%, yet the description provides no explanation for the 4 parameters (currency, state, page, limit). The agent cannot infer valid values or usage patterns.
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 states the action (list) and resource (deposits) clearly. However, it lacks differentiation from sibling tools like GET_DEPOSIT or LIST_WITHDRAWALS, leaving ambiguity about the tool's specific scope.
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. The only context is 'requires private API,' which hints at authorization but does not explain conditions for use or provide examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
LIST_WITHDRAWAL_ADDRESSESA
List registered withdrawal-allowed addresses (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It only discloses the authentication requirement ('private API'), but fails to mention other behavioral traits such as idempotency, rate limits, or whether the list is exhaustive or paginated. This is insufficient for a tool with zero 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 of 8 words, front-loading the action and resource. Every word is necessary and there is no redundancy or filler.
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 annotations and output schema, the description should provide more context about the return value (e.g., list of addresses with fields) and any ordering or filtering. The tool is simple (no params), but the description is too sparse for an agent to understand what the output contains.
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, and the schema coverage is 100% by default. The description does not add parameter-specific information, but none is needed. The baseline for zero parameters 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?
The description clearly states the action ('List'), the resource ('registered withdrawal-allowed addresses'), and distinguishes from sibling LIST_WITHDRAWALS which lists withdrawals, not addresses. The tool name is self-explanatory and the description adds clarity about the scope.
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 mentions 'requires private API', implying it's for authenticated users only, but does not explicitly state when to use this tool versus alternatives like LIST_DEPOSIT_ADDRESSES or LIST_WITHDRAWALS. The differentiation is based on the resource name, but no direct guidance on selection criteria is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
LIST_WITHDRAWALSC
List withdrawals (requires private API)
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | ||
| state | No | ||
| page | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description must carry burden. It only states 'requires private API' but does not disclose pagination, sorting, or effect of state parameter on behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single short sentence, no fluff, but could be more informative 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?
With 4 parameters, no output schema, no annotations, and no parameter descriptions, the description is severely incomplete for an agent to use effectively.
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 0%, and description adds no information about the meaning or allowed values for currency, state, page, or limit parameters.
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 withdrawals, a specific verb+resource. It distinguishes from siblings like LIST_DEPOSITS and CANCEL_WITHDRAWAL.
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 'requires private API', which is a prerequisite, but no guidance on when to use it versus alternatives like GET_WITHDRAWAL, and no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v1.0.0- Added
CANCEL_WITHDRAWAL - Added
CREATE_DEPOSIT_ADDRESS - Changed
CREATE_ORDER3 fields changed- added
Input schema / properties / identifierAdded value: +{ + "type": "string" +} - added
Input schema / properties / smp_typeAdded value: +{ + "enum": [ + "cancel_maker", + "cancel_taker", + "reduce" + ], + "type": "string" +} - added
Input schema / properties / time_in_forceAdded value: +{ + "enum": [ + "ioc", + "fok", + "post_only" + ], + "type": "string" +}
- Added
CREATE_WITHDRAWAL - Added
GET_DEPOSIT - Added
GET_DEPOSIT_ADDRESS - Added
GET_DEPOSIT_CHANCE - Added
GET_WITHDRAWAL - Added
LIST_DEPOSIT_ADDRESSES - Added
LIST_DEPOSITS - Added
LIST_WITHDRAWAL_ADDRESSES - Added
LIST_WITHDRAWALS
8 tool updates
- First observed
CANCEL_ORDER - First observed
CREATE_ORDER - First observed
GET_ACCOUNTS - First observed
GET_ORDER - First observed
GET_ORDERBOOK - First observed
GET_ORDERS - First observed
GET_TICKER - First observed
GET_TRADES
TDQS
Every tool has a clearly distinct purpose targeting specific resources and actions in the Upbit cryptocurrency exchange domain. For example, GET_ORDER retrieves a single order while GET_ORDERS lists multiple orders, and similarly distinct tools exist for deposits, withdrawals, and market data with no overlapping functionality.
All tools follow a consistent verb_noun pattern using uppercase snake_case (e.g., CREATE_ORDER, GET_ACCOUNTS, LIST_DEPOSITS). The naming convention is perfectly uniform throughout the entire set with clear action prefixes (GET, CREATE, LIST, CANCEL) followed by specific resource nouns.
With 19 tools, the count is slightly high but reasonable for a comprehensive cryptocurrency exchange API. It covers account management, trading, deposits, withdrawals, and market data - all essential areas for the domain. A few tools could potentially be consolidated (like GET_DEPOSIT and LIST_DEPOSITS), but overall the scope justifies the number.
The tool set provides complete CRUD/lifecycle coverage for the Upbit exchange domain. It includes creation (CREATE_ORDER, CREATE_WITHDRAWAL), retrieval (GET_ORDER, GET_ACCOUNTS), listing (LIST_DEPOSITS, LIST_WITHDRAWALS), cancellation (CANCEL_ORDER, CANCEL_WITHDRAWAL), and comprehensive market data access. No obvious gaps exist for core exchange operations.
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
Market analyst tools + AI agent: crypto, US equities, options, Korea, fundamentals, macro, backtests
1Official-source financial data for AI agents: Korea, US, Taiwan, Japan, Europe. 37 tools, free tier.
AI agent access to Asian crypto markets. Korean exchange routing and x402 paid APIs.
Binance - 340 tools for market data, order books, and trading pairs
Related MCP Servers
- AlicenseBqualityCmaintenanceInteract with Upbit cryptocurrency exchange services to retrieve market data, manage accounts, and execute trades. Simplify your trading experience with tools for order management, deposits, withdrawals, and technical analysis.1017MIT
- AlicenseBqualityDmaintenanceEnables interaction with the Bithumb cryptocurrency exchange API to fetch market data, manage account balances, and execute trading operations including limit orders, market orders, and withdrawals.1920MIT
- 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.-
- AlicenseNot gradedqualityDmaintenanceProvides over 156 tools to interact with the Binance.com global exchange API for spot trading, wallet management, and staking operations. It enables users to execute orders, retrieve market data, and manage crypto assets through natural language interfaces like Claude and ChatGPT.7734MIT
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/BrainDAO/mcp-upbit'
If you have feedback or need assistance with the MCP directory API, please join our Discord server