Skip to main content
Glama
BrainDAO

Upbit MCP Server

by BrainDAO

πŸ“ˆ Upbit MCP Server

npm version License: MIT

πŸ“– 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

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

UPBIT_SERVER_URL

No

Upbit API server URL

https://api.upbit.com

UPBIT_ACCESS_KEY

For trading

Your Upbit API access key

-

UPBIT_SECRET_KEY

For trading

Your Upbit API secret key

-

UPBIT_ENABLE_TRADING

For trading

Enable private trading tools

false

πŸ”‘ Where to Get Upbit API Keys

  1. Create an account on Upbit if you don't already have one

  2. Go to the Upbit Developer Center

  3. Create a new API key

  4. Set appropriate permissions (read, trade, withdraw as needed)

  5. Store your API keys in the environment variables

πŸ”’ Security & Permissions

  • Keep your UPBIT_SECRET_KEY private and IP-allowlist your server in Upbit.

  • Set UPBIT_ENABLE_TRADING=true only 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

uuid

string

βœ…

CANCEL_WITHDRAWAL

Cancel a digital asset withdrawal by UUID (requires private API)

Parameter

Type

Required

Description

uuid

string

βœ…

CREATE_DEPOSIT_ADDRESS

Request creation of a deposit address (requires private API)

Parameter

Type

Required

Description

currency

string

βœ…

net_type

string

βœ…

CREATE_ORDER

Create an Upbit order (requires private API)

Parameter

Type

Required

Description

market

string

βœ…

side

string

βœ…

ord_type

string

βœ…

volume

string

price

string

time_in_force

string

smp_type

string

identifier

string

CREATE_WITHDRAWAL

Request a digital asset withdrawal (requires private API)

Parameter

Type

Required

Description

currency

string

βœ…

amount

string

βœ…

address

string

βœ…

net_type

string

βœ…

secondary_address

string

transaction_type

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

uuid

string

βœ…

GET_DEPOSIT_ADDRESS

Get a single deposit address for a currency and net_type (private)

Parameter

Type

Required

Description

currency

string

βœ…

net_type

string

βœ…

GET_DEPOSIT_CHANCE

Get deposit availability information for a currency (private)

Parameter

Type

Required

Description

currency

string

βœ…

net_type

string

GET_ORDER

Get a single Upbit order (requires private API)

Parameter

Type

Required

Description

uuid

string

identifier

string

GET_ORDERBOOK

Get orderbook snapshot for a given market

Parameter

Type

Required

Description

market

string

βœ…

Upbit market code, e.g., KRW-BTC

GET_ORDERS

List Upbit orders (requires private API)

Parameter

Type

Required

Default

Description

market

string

state

string

"wait"

page

integer

1

limit

integer

100

GET_TICKER

Get the latest ticker data from Upbit for a single market

Parameter

Type

Required

Description

market

string

βœ…

Upbit market code, e.g., KRW-BTC

GET_TRADES

Get recent trades for a market

Parameter

Type

Required

Description

market

string

βœ…

Upbit market code, e.g., KRW-BTC

GET_WITHDRAWAL

Get a single withdrawal by UUID (requires private API)

Parameter

Type

Required

Description

uuid

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

currency

string

state

string

page

integer

1

limit

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

currency

string

state

string

page

integer

1

limit

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 definitions

  • src/lib/: Configuration, HTTP client, and authentication utilities

  • src/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

MIT

Available Tools

19 tools
CANCEL_ORDERB

Cancel an existing Upbit order (requires private API)

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYes
net_typeYes

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYes
sideYes
ord_typeYes
volumeNo
priceNo
time_in_forceNo
smp_typeNo
identifierNo

TDQS

C2.3/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYes
amountYes
addressYes
net_typeYes
secondary_addressNo
transaction_typeNo

TDQS

C2/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple tool with 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYes
net_typeYes

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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

Given no output schema, the description 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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYes
net_typeNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidNo
identifierNo

TDQS

C2.5/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYesUpbit market code, e.g., KRW-BTC

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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

Given no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo
stateNowait
pageNo
limitNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYesUpbit market code, e.g., KRW-BTC

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
marketYesUpbit market code, e.g., KRW-BTC

TDQS

C2.6/5.0
Behavior1/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries 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.

Conciseness5/5

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.

Completeness3/5

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

Given no parameters and no output schema, the description 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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool lists 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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNo
stateNo
pageNo
limitNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNo
stateNo
pageNo
limitNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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

The description clearly states the tool lists 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.

Usage Guidelines2/5

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.

  1. 12 tool updatesv1.0.0
    • AddedCANCEL_WITHDRAWAL
    • AddedCREATE_DEPOSIT_ADDRESS
    • ChangedCREATE_ORDER3 fields changed
      • addedInput schema / properties / identifier
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / smp_type
        Added value: +{
        +  "enum": [
        +    "cancel_maker",
        +    "cancel_taker",
        +    "reduce"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / time_in_force
        Added value: +{
        +  "enum": [
        +    "ioc",
        +    "fok",
        +    "post_only"
        +  ],
        +  "type": "string"
        +}
    • AddedCREATE_WITHDRAWAL
    • AddedGET_DEPOSIT
    • AddedGET_DEPOSIT_ADDRESS
    • AddedGET_DEPOSIT_CHANCE
    • AddedGET_WITHDRAWAL
    • AddedLIST_DEPOSIT_ADDRESSES
    • AddedLIST_DEPOSITS
    • AddedLIST_WITHDRAWAL_ADDRESSES
    • AddedLIST_WITHDRAWALS
  2. 8 tool updates
    • First observedCANCEL_ORDER
    • First observedCREATE_ORDER
    • First observedGET_ACCOUNTS
    • First observedGET_ORDER
    • First observedGET_ORDERBOOK
    • First observedGET_ORDERS
    • First observedGET_TICKER
    • First observedGET_TRADES

TDQS

B3.3/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Interact 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.
    10
    17
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    19
    20
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes 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.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    77
    34
    MIT

Latest Blog Posts

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