MCP Bitpanda Server
The MCP Bitpanda Server provides programmatic access to Bitpanda API features, enabling you to:
Retrieve detailed asset information by symbol (e.g., BTC, XAU)
Fetch OHLC (Open/High/Low/Close) data for assets by symbol, fiat currency, and timeframe (day/week)
List user's trades with filtering by type (buy/sell) and cursor-based pagination
View asset wallets grouped by asset type
Access fiat wallets and their transactions with filtering by type (buy, sell, deposit, withdrawal, transfer, refund) and status (pending, processing, finished, canceled)
List crypto wallets and transactions with filtering by type (buy, sell, deposit, withdrawal, transfer, refund, ico) and status (pending, processing, unconfirmed_transaction_out, open_invitation, finished, canceled)
Get commodity transactions with pagination support
Used as the runtime environment for the MCP server, allowing it to execute JavaScript code.
Used for package management and running scripts for the MCP server.
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., "@MCP Bitpanda Servershow me my recent Bitcoin trades"
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.
MCP Bitpanda Server
A Model Context Protocol (MCP) server that exposes tools for interacting with the Bitpanda API. This server allows programmatic access to Bitpanda features like trades, wallets, and transactions via the MCP protocol.
Prerequisites
Node.js (v18 or later recommended)
npm (comes with Node.js)
A Bitpanda API Key (set as
BITPANDA_API_KEYenvironment variable)(Optional) MCP-compatible client or runner (e.g., VSCode extension, CLI)
Related MCP server: MCP YNAB Server
Setup
Clone the repository or ensure you are in the project directory.
Install dependencies:
npm installBuild the server:
npm run buildThis will create a
builddirectory with the compiled JavaScript code.
Installing via Smithery
To install MCP Bitpanda Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @matteoantoci/mcp-bitpanda --client claudeRunning the Server
Directly:
node build/index.jsor, if you have a start script:
npm run startVia MCP runner: Configure your MCP client to run the server using stdio transport. Example MCP settings entry:
"mcp-bitpanda": { "transportType": "stdio", "command": "node", "args": [ "/path/to/mcp-bitpanda/build/index.js" ] // Add environment variables, e.g., for the API key "environmentVariables": { "BITPANDA_API_KEY": "YOUR_BITPANDA_API_KEY" // Replace with your actual API key or use a secure method to provide it } // ... other optional settings ... }
Available Tools
get_asset_info: Retrieves detailed information for a specific asset by its symbol (e.g., BTC, XAU).Parameters:
symbol(string, required)Note: This tool does not require an API key.
get_ohlc: Retrieves OHLC (Open/High/Low/Close) data for a specific asset, fiat currency, and timeframe.Parameters:
symbol(string, required): The trading symbol.fiatCurrency(string, required): The fiat currency (e.g., USD, EUR).timeframe(string, required): Either "day" or "week".
Note: This tool does not require an API key.
list_trades: Lists all user's trades from the Bitpanda API. Newest trades come first. Response is cursor paginated.Parameters:
type(string, optional): One ofbuyorsell.cursor(string, optional): Id of the last known trade by the client. Only trades after this id are returned. Empty or missing cursor parameter will return trades from the start.page_size(integer, optional): Size of a page for the paginated response.
list_asset_wallets: Lists all user's asset wallets grouped by asset type from the Bitpanda API.Parameters: None.
list_fiat_wallets: Lists all user's fiat wallets from the Bitpanda API.Parameters: None.
list_fiat_transactions: Lists all user's fiat transactions from the Bitpanda API. Newest fiat transactions come first. Response is cursor paginated.Parameters:
type(string, optional): buy, sell, deposit, withdrawal, transfer, refund.status(string, optional): pending, processing, finished, canceled.cursor(string, optional): Id of the last known fiat transaction by the client. Only fiat transactions after this id are returned. Empty or missing cursor parameter will return fiat transactions from the start.page_size(integer, optional): Size of a page for the paginated response.
list_crypto_wallets: Lists all user's crypto wallets from the Bitpanda API.Parameters: None.
list_crypto_transactions: Lists all user's crypto transactions from the Bitpanda API. Newest crypto transactions come first. Response is cursor paginated.Parameters:
type(string, optional): One ofbuy,sell,deposit,withdrawal,transfer,refundorico.status(string, optional): One ofpending,processing,unconfirmed_transaction_out,open_invitation,finishedorcanceled.cursor(string, optional): Id of the last known crypto transaction by the client. Only crypto transactions after this id are returned. Empty or missing cursor parameter will return crypto transactions from the start.page_size(integer, optional): Size of a page for the paginated response.
list_commodity_transactions: Lists all user's commodity transactions from the Bitpanda API. Newest commodity transactions come first. Response is cursor paginated.Parameters:
cursor(string, optional): Id of the last known commodity transaction by the client. Only commodity transactions after this id are returned. Empty or missing cursor parameter will return commodity transactions from the start.page_size(integer, optional): Size of a page for the paginated response.
Extending
To add more Bitpanda API endpoints as tools, implement a new tool file in src/tools/ and register it in src/tools/index.ts.
Available Tools
8 toolsget_asset_infoC
Retrieves detailed information for a specific asset by its symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | The trading symbol of the asset (e.g., BTC, XAU) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral context. It implies a read-only operation ('Retrieves'), but doesn't disclose error handling, rate limits, authentication needs, or what 'detailed information' includes. This is inadequate for a tool with no annotation coverage.
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, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' returns, error cases, or behavioral traits. For a tool in a financial context with siblings, more context is needed to guide proper 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?
The schema description coverage is 100%, so the schema already fully documents the single 'symbol' parameter. The description adds marginal value by mentioning 'trading symbol' and examples (BTC, XAU), but this is redundant with the schema's description. Baseline 3 is appropriate when schema does the heavy lifting.
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 ('Retrieves') and resource ('detailed information for a specific asset'), specifying it's for a single asset identified by symbol. However, it doesn't differentiate from potential sibling tools like list_asset_wallets or list_trades, which might also retrieve asset-related information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like list_asset_wallets or list_trades, nor does it specify prerequisites or exclusions (e.g., when symbol lookup is needed vs. bulk listing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_asset_walletsB
Lists all user's asset wallets grouped by asset type from the Bitpanda 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 the full burden of behavioral disclosure. It states this is a list operation, implying it's likely read-only and non-destructive, but doesn't confirm this or address other traits like authentication needs, rate limits, or response format. The description adds minimal behavioral context beyond the basic action.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is minimally adequate by stating what it does. However, as a list operation with sibling tools that might overlap (e.g., 'list_crypto_wallets'), it lacks context on scope or differentiation, and without annotations, it doesn't address behavioral aspects like safety or response format, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, and the baseline for this scenario is 4, as it avoids redundancy while being complete for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Lists') and resource ('user's asset wallets grouped by asset type from the Bitpanda API'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_crypto_wallets' or 'list_fiat_wallets', which appear to be more specific versions of this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_crypto_wallets' or 'list_fiat_wallets'. It doesn't mention prerequisites, exclusions, or comparative contexts, leaving the agent to infer usage from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commodity_transactionsA
Lists all user's commodity transactions from the Bitpanda API. Newest commodity transactions come first. Response is cursor paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Id of the last known commodity transaction by the client. Only commodity transactions after this id are returned. Empty or missing cursor parameter will return commodity transactions from the start. | |
| page_size | No | Size of a page for the paginated response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and adds valuable behavioral context: it specifies that results are sorted with 'newest commodity transactions come first' and that the 'response is cursor paginated.' This discloses key operational traits beyond basic listing, though it could mention rate limits or authentication needs.
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 front-loaded with the core purpose, followed by ordering and pagination details in two concise sentences. Every sentence adds essential information without redundancy, making it efficient and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is fairly complete: it covers purpose, ordering, and pagination. However, it lacks details on response format, error handling, or authentication requirements, which would enhance completeness for an API 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?
The schema description coverage is 100%, so the schema already documents both parameters (cursor and page_size) thoroughly. The description does not add any parameter-specific details beyond what the schema provides, such as syntax examples or default values, meeting the baseline for high 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 specific action ('Lists'), resource ('all user's commodity transactions'), and source ('from the Bitpanda API'), distinguishing it from sibling tools like list_crypto_transactions or list_fiat_transactions by specifying commodity transactions. It provides a complete purpose statement without being tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving commodity transactions in a paginated, newest-first order, but does not explicitly state when to use this tool versus alternatives (e.g., compared to list_trades or other transaction types). It offers some context through ordering and pagination, but lacks explicit guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_crypto_transactionsA
Lists all user's crypto transactions from the Bitpanda API. Newest crypto transactions come first. Response is cursor paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | One of `buy`, `sell`, `deposit`, `withdrawal`, `transfer`, `refund` or `ico`. | |
| status | No | One of `pending`, `processing`, `unconfirmed_transaction_out`, `open_invitation`, `finished` or `canceled`. | |
| cursor | No | Id of the last known crypto transaction by the client. Only crypto transactions after this id are returned. Empty or missing cursor parameter will return crypto transactions from the start. | |
| page_size | No | Size of a page for the paginated response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: ordering ('Newest crypto transactions come first'), pagination method ('cursor paginated'), and that it's a read operation (implied by 'Lists'). However, it lacks details on rate limits, authentication needs, or error handling.
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 efficiently structured in three concise sentences with zero waste: states purpose, ordering, and pagination method. Each sentence adds essential information, making it front-loaded and appropriately sized for the tool's complexity.
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 annotations and no output schema, the description provides good context on behavior (ordering, pagination) but lacks details on response format, error cases, or authentication. It's mostly complete for a list operation but could be enhanced with output expectations.
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%, providing full documentation of all 4 parameters. The description adds no parameter-specific information beyond what the schema already states, so it meets the baseline of 3 without compensating with additional semantic context.
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 ('Lists') and resource ('all user's crypto transactions from the Bitpanda API'), distinguishing it from siblings like list_fiat_transactions, list_commodity_transactions, and list_trades by specifying crypto transactions. It provides specific scope and data source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving crypto transactions, but does not explicitly state when to use this tool versus alternatives like list_fiat_transactions or list_trades. No exclusions or prerequisites are mentioned, leaving usage context somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_crypto_walletsB
Lists all user's crypto wallets from the Bitpanda 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 the full burden of behavioral disclosure. It states it 'Lists all user's crypto wallets' but doesn't mention authentication requirements, rate limits, pagination behavior, or what data is returned. For a read operation with zero annotation coverage, this leaves significant gaps.
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, efficient sentence that directly states the tool's purpose with no wasted words. It's appropriately sized and front-loaded, making it easy to parse.
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 annotations and output schema, the description is incomplete for a tool that presumably returns wallet data. It doesn't explain what information is included in the listing (e.g., balances, addresses) or any behavioral aspects like authentication needs. For a tool with no structured metadata, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter information, and it correctly implies no parameters are required by not mentioning any.
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 ('Lists') and resource ('all user's crypto wallets from the Bitpanda API'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'list_fiat_wallets' or 'list_asset_wallets', but the specificity of 'crypto wallets' provides some implicit differentiation.
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 'list_fiat_wallets' or 'list_asset_wallets'. The description simply states what it does without indicating context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fiat_transactionsA
Lists all user's fiat transactions from the Bitpanda API. Newest fiat transactions come first. Response is cursor paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | buy, sell, deposit, withdrawal, transfer, refund | |
| status | No | pending, processing, finished, canceled | |
| cursor | No | Id of the last known fiat transaction by the client. Only fiat transactions after this id are returned. Empty or missing cursor parameter will return fiat transactions from the start. | |
| page_size | No | Size of a page for the paginated response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context: it specifies that results are ordered newest-first and cursor-paginated. However, it doesn't cover critical aspects like authentication requirements, rate limits, error handling, or what the response format looks like, leaving gaps for a tool with no annotation support.
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 front-loaded with the core purpose in the first sentence, followed by two concise sentences adding key behavioral details (ordering and pagination). Every sentence earns its place with no wasted words, making it efficient and well-structured.
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 annotations and no output schema, the description is moderately complete: it covers purpose, ordering, and pagination but lacks details on authentication, error handling, response format, and usage guidelines. For a list tool with 4 parameters and no structured support, it should do more to compensate for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning beyond what the schema provides, such as explaining parameter interactions or usage examples. Baseline 3 is appropriate when the schema handles all parameter documentation.
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 ('Lists') and resource ('all user's fiat transactions from the Bitpanda API'), specifying the scope and data source. It distinguishes from siblings like list_crypto_transactions by focusing on fiat transactions, making the purpose specific and well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as list_crypto_transactions or list_trades. It lacks context about use cases, prerequisites, or exclusions, leaving the agent without direction for tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fiat_walletsB
Lists all user's fiat wallets from the Bitpanda API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying it's likely read-only, but doesn't confirm this or add any other behavioral context such as authentication requirements, rate limits, pagination, or what happens if no wallets exist. This leaves significant gaps for a tool interacting with an external API.
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, direct sentence that efficiently conveys the core purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but not complete. It specifies the resource type ('fiat wallets') and source ('Bitpanda API'), which is helpful, but lacks behavioral details like authentication needs or response format, which are important for API tools. The absence of an output schema increases the need for more context in the description.
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 0 parameters, and the schema description coverage is 100% (though empty). The description doesn't need to add parameter semantics, so it meets the baseline expectation. It appropriately doesn't discuss parameters, avoiding unnecessary detail.
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 ('Lists') and resource ('all user's fiat wallets from the Bitpanda API'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_crypto_wallets' or 'list_asset_wallets', which would require mentioning it specifically retrieves fiat (not crypto or asset) wallets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'list_crypto_wallets' or 'list_asset_wallets', nor does it specify prerequisites, contexts, or exclusions for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tradesA
Lists all user's trades from the Bitpanda API. Newest trades come first. Response is cursor paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | One of `buy` or `sell` | |
| cursor | No | Id of the last known trade by the client. Only trades after this id are returned. Empty or missing cursor parameter will return trades from the start. | |
| page_size | No | Size of a page for the paginated response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context: it specifies ordering ('Newest trades come first') and pagination behavior ('Response is cursor paginated'), which are not covered by the schema. However, it lacks details on permissions, rate limits, or error handling, leaving gaps for a tool with no annotation support.
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 front-loaded with the core purpose in the first sentence, followed by ordering and pagination details in two concise sentences. Every sentence adds value without redundancy, making it efficient and well-structured.
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 annotations and no output schema, the description partially compensates by explaining ordering and pagination. However, for a tool with 3 parameters and no structured output information, it should ideally cover more behavioral aspects like response format or error cases to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add any parameter-specific semantics beyond what the schema provides, such as explaining interactions between parameters or default values. Baseline 3 is appropriate when the schema does the heavy lifting.
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 'Lists' and the resource 'all user's trades from the Bitpanda API', specifying the scope as the user's trades. It distinguishes from siblings like list_asset_wallets or list_crypto_transactions by focusing specifically on trades rather than wallets or transaction types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as list_crypto_transactions or list_fiat_transactions, which might overlap in functionality. It mentions cursor pagination but does not specify prerequisites or exclusions for usage.
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.
3 tool updates
v1.0.0- Changed
list_asset_wallets1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
list_crypto_wallets1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
list_fiat_wallets1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
8 tool updates
- First observed
get_asset_info - First observed
list_asset_wallets - First observed
list_commodity_transactions - First observed
list_crypto_transactions - First observed
list_crypto_wallets - First observed
list_fiat_transactions - First observed
list_fiat_wallets - First observed
list_trades
TDQS
Scored across 8 tools
The tools are mostly distinct, focusing on different resource types like assets, wallets, transactions, and trades. However, there is some potential overlap between 'list_trades' and the transaction tools (commodity, crypto, fiat), as trades might be a subset or related to transactions, which could cause minor confusion without additional context.
All tool names follow a consistent verb_noun pattern with 'get_' or 'list_' prefixes, using snake_case throughout. This predictability makes it easy for agents to understand and select tools based on their naming conventions.
With 8 tools, the server is well-scoped for a Bitpanda API integration, covering key areas like asset information, wallets, transactions, and trades. Each tool serves a clear purpose without being overly broad or too limited for the domain.
The tools provide good read/list coverage for assets, wallets, transactions, and trades, but there are notable gaps in CRUD operations. For example, there are no tools for creating, updating, or deleting resources (e.g., executing trades or modifying wallets), which limits the server's functionality to querying only.
Maintenance
Related MCP Connectors
Keyless prediction-market data across 12 venues plus paper-trading of crypto spot, futures, and PM.
Model Context Protocol server for Studex tools, notifications, and profile integrations
Model Context Protocol server for todo.vu task management and time tracking.
Read-only access to your bank, investment, and crypto accounts: balances, transactions, holdings.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables interaction with Linear's API for managing issues, teams, and projects programmatically through the Model Context Protocol.7833MIT
- FlicenseBqualityNot gradedmaintenanceProvides access to YNAB (You Need A Budget) functionality through the Model Context Protocol, allowing users to view account balances, access transaction data, and create new transactions.10-
- AlicenseNot gradedqualityCmaintenanceEnables interaction with FireHydrant's incident management API through the Model Context Protocol. Provides programmatic access to FireHydrant's features for managing incidents, retrospectives, and operational workflows.2,9405MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to scan markets, build option strategies, track positions, and execute trades on TastyTrade via the Model Context Protocol.3MIT