Avanza MCP Server
The Avanza MCP Server provides access to Avanza's public API for Swedish financial market data, enabling real-time quotes, historical analysis, and comprehensive instrument research for MCP clients like Claude Desktop, Cursor, and VS Code.
Search & Discovery
Search for stocks, funds, ETFs, certificates, and warrants by name, ticker, or ISIN
Look up instruments by their order book ID
Stock Analysis
Detailed stock information including fundamentals, market cap, and company description
Real-time price quotes with bid/ask spread, VWAP, and volume
Financial ratios (annual, quarterly, TTM, Q-o-Q comparisons)
Historical OHLC price chart data across multiple time periods
Real-time order book depth with bid/ask levels
Market status and trading hours
Recent executed trades with price, volume, and timestamps
Broker buy/sell activity summaries
Historical dividend data by year
Annual and quarterly company financial statements (revenue, profit, margins)
Fund Analysis
Comprehensive fund information including NAV, performance, risk metrics, and fees
ESG/sustainability scores (environmental, social, governance, carbon metrics)
Historical fund performance charts across various time periods
Detailed fund descriptions, investment strategy, and portfolio holdings by country, sector, and top positions
Specialized Instruments
Filter, search, and retrieve detailed information for certificates, warrants (turbos, minis), ETFs, and futures/forwards
Additional Market Data
Owner counts for any instrument
Short selling data
Market maker OHLC price charts for traded products (certificates, warrants, ETFs)
AI-driven Analysis & Workflows
Predefined prompts for comprehensive stock analysis, multi-fund comparisons, dividend stock screening, and guided workflows for efficient instrument searching, filtering, and custom criteria screening
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., "@Avanza MCP ServerShow me the top holdings and performance for the Avanza Global fund"
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.
Avanza MCP Server
A Model Context Protocol (MCP) server providing access to Avanza's public API. Get real-time Swedish stock quotes, fund information, charts, and comprehensive market data.
🚀 Features
Fetch instrument info (stocks, ETFs, funds)
Real-time price quotes & order book depth
Historical price charts & financial ratios
Fund performance & ESG metrics
Screening and comparison prompts
Related MCP server: Stock Ticker MCP Server
Installation for MCP Clients
Add the following to your Claude Desktop MCP configuration file:
{
"mcpServers": {
"avanza": {
"command": "uvx",
"args": ["--prerelease=allow", "avanza-mcp"]
}
}
}Restart Claude Desktop after saving the configuration.
Cursor supports MCP servers via its settings.
Open Cursor Settings
Navigate to AI → MCP Servers
Add a new MCP server with the following configuration:
{
"name": "avanza",
"command": "uvx",
"args": ["--prerelease=allow", "avanza-mcp"]
}Once added, Cursor can query Avanza market data directly in chat and inline prompts.
VS Code can use Avanza MCP Server through MCP-compatible extensions or custom AI tooling.
Ensure you have Python 3.10+ installed
Ensure
uvis installed: https://docs.astral.sh/uv/Add the following MCP server configuration to your MCP-enabled extension or tool:
{
"mcpServers": {
"avanza": {
"command": "uvx",
"args": ["--prerelease=allow", "avanza-mcp"]
}
}
}Reload the VS Code window after updating the configuration.
Note: MCP support depends on the specific extension you are using. Refer to your extension’s documentation for MCP setup details.
⚠️ Disclaimer
This is an unofficial API client/MCP Server. Not affiliated with Avanza Bank AB. The underlying API can be taken down or changed without warning at any point in time.
The author of this software is not responsible for any indirect damages (foreseeable or unforeseeable), such as, if necessary, loss or alteration of or fraudulent access to data, accidental transmission of viruses or of any other harmful element, loss of profits or opportunities, the cost of replacement goods and services or the attitude and behavior of a third party.
🛠️ MCP Tools
Search & Discovery
Tool | Description |
| Find stocks, funds, ETFs by name or symbol |
| Look up instruments by order book ID |
Stock Analysis
Tool | Description |
| Complete stock information with fundamentals |
| Real-time price and volume data |
| Financial ratios by year and quarter |
| Historical OHLC price data |
| Order book depth with bid/ask levels |
| Trading hours and market status |
| Latest executed trades |
| Broker buy/sell activity |
| Historical dividend data |
| Annual and quarterly financial statements |
Fund Analysis
Tool | Description |
| Complete fund information with performance |
| ESG scores and sustainability metrics |
| Historical performance charts |
| Performance across all time periods |
| Detailed fund description |
| Portfolio allocation (country, sector, top holdings) |
Certificates
Tool | Description |
| Search and filter certificates with pagination |
| Get detailed certificate information |
| Get extended certificate details |
Warrants
Tool | Description |
| Search and filter warrants (turbos, minis) |
| Get detailed warrant information |
| Get extended warrant details |
ETFs
Tool | Description |
| Search and filter exchange-traded funds |
| Get detailed ETF information |
| Get extended ETF details |
Futures/Forwards
Tool | Description |
| List available futures and forwards |
| Get available filter options |
| Get contract information |
| Get extended contract details |
Additional Data
Tool | Description |
| Get owner count for any instrument |
| Get short selling data for instruments |
| Get OHLC price chart data for traded products (certificates, warrants, ETFs) |
💡 MCP Prompts
Analysis Prompts
analyze_stock- Comprehensive stock analysis workflowcompare_funds- Multi-fund comparison templatescreen_dividend_stocks- Dividend stock screening
Workflow Prompts (Teach AI Efficient Data Fetching)
search_and_analyze_instrument- Guide for finding and analyzing instruments efficientlyfilter_instruments_efficiently- Guide for filtering large datasets with paginationcompare_multiple_instruments- Guide for comparing instruments efficientlyexplore_market_segment- Guide for exploring market segmentsget_historical_analysis- Guide for analyzing historical datascreen_by_criteria- Guide for screening by custom criteria
📚 MCP Resources
Documentation Resources
avanza://docs/usage- Comprehensive usage guide for AI assistantsavanza://docs/quick-start- Quick reference for common tasks
Instrument Resources
avanza://stock/{instrument_id}- Get stock information as markdownavanza://fund/{instrument_id}- Get fund information as markdown
Note: The
--prerelease=allowflag is required because this package depends on fastmcp 3.0 (currently in beta). This will no longer be needed once fastmcp 3.0 stable is released.
Usage in Claude Desktop
Once configured, you can ask Claude:
"Search for Volvo stock on Avanza"
"Get the latest stock quote for Ericsson"
"Show me sustainable Swedish funds"
"What's in the order book for H&M?"
"Compare the performance of these three funds"
"What dividends has SEB paid over the years?"
"Show me the portfolio holdings for Avanza Global fund"
📄 License
MIT License - See LICENSE.md for details.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Available Tools
18 toolsget_broker_trade_summaryA
Get broker trade summary showing buy/sell activity.
Returns aggregated broker trading data showing total buy and sell volumes. Useful for understanding institutional trading activity.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID from search results
Returns: List of broker trade summaries with: - brokerCode: Broker identifier - buyVolume: Total volume bought - sellVolume: Total volume sold - netVolume: Net volume (buy - sell)
Examples: Get broker trading activity: >>> get_broker_trade_summary(instrument_id="5269")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 clearly describes what the tool returns (aggregated broker trading data) and the structure of the output, which is helpful. However, it doesn't mention important behavioral aspects like whether this requires authentication, rate limits, data freshness, or error conditions, leaving significant gaps 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 well-structured with clear sections (description, Args, Returns, Examples) and front-loads the core purpose. While efficient, the 'Args' section could be slightly more concise by integrating the parameter explanation into the main flow rather than as a separate labeled section, but overall it's appropriately sized with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (true) and no annotations, the description does a good job explaining the return structure in detail. However, for a financial data tool with institutional implications, it could better address data sources, update frequency, or limitations. The example is helpful but doesn't cover edge cases or error scenarios, leaving some contextual 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?
The schema description coverage is 0%, so the description must fully compensate. It provides excellent parameter semantics by explaining that 'instrument_id' is an 'Avanza instrument ID from search results' and includes a concrete example with '5269'. This adds crucial meaning beyond the bare schema, fully documenting the single required parameter's purpose and format.
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 ('Get broker trade summary') and resource ('showing buy/sell activity'), distinguishing it from siblings like get_recent_trades or get_stock_quote by focusing on aggregated broker-level data rather than individual trades or price quotes. The opening sentence provides a complete verb+resource statement with precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool ('Useful for understanding institutional trading activity'), which implicitly differentiates it from sibling tools that provide different types of financial data. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the siblings, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_financialsB
Get company financial statements and metrics.
Returns comprehensive financial data including revenue, profits, margins, and other key metrics by year and quarter.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID from search results
Returns: Financial data with: - companyFinancialsByYear: Annual financial data - companyFinancialsByQuarter: Quarterly financial data - companyFinancialsByQuarterTTM: Trailing twelve months data Each containing metrics like: - revenue: Total revenue - operatingProfit: Operating profit - netProfit: Net profit - grossMargin: Gross profit margin - operatingMargin: Operating margin - netMargin: Net profit margin
Examples: Get financials for a company: >>> get_company_financials(instrument_id="5479")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 describes the return structure comprehensively but doesn't mention important behavioral aspects: whether this is a read-only operation (implied by 'Get' but not explicit), rate limits, authentication requirements, data freshness, or error conditions. For a financial data tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
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 well-structured with clear sections (purpose, returns, args, returns details, examples) and front-loaded the core purpose. Every sentence adds value, though the detailed metrics listing in the returns section is somewhat lengthy but informative. The example is helpful and appropriately placed.
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 (financial data retrieval), no annotations, but with an output schema (implied by the detailed returns description), the description is reasonably complete. It covers the purpose, parameter semantics, and return structure comprehensively. The main gaps are behavioral aspects (rate limits, auth) and usage guidelines versus siblings, but the output description reduces the need for return value explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context about the single parameter: 'instrument_id: Avanza instrument ID from search results' clarifies that this is a specific identifier format from the Avanza platform and should come from search results. With 0% schema description coverage and only one parameter, this compensates well by providing the necessary semantic understanding beyond the bare schema type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get company financial statements and metrics' with specific resources (revenue, profits, margins) and time dimensions (year and quarter). It distinguishes from siblings like get_stock_quote or get_stock_info by focusing specifically on financial statements rather than market data or general information. However, it doesn't explicitly contrast with get_stock_analysis which might overlap.
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 prerequisites like needing an instrument_id from search results (though this is implied by the parameter), nor does it differentiate from sibling tools like get_stock_analysis that might provide similar financial insights. The example shows basic usage but lacks contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dividendsA
Get historical dividend data for a stock.
Returns dividend history by year including amounts, dates, and yields. Useful for income investors and dividend analysis.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID from search results
Returns: Dividend data with: - dividendsByYear: Array of yearly dividend data including: - year: Year of dividend - dividend: Dividend amount per share - exDate: Ex-dividend date - paymentDate: Payment date - yield: Dividend yield percentage - currency: Dividend currency
Examples: Get dividend history for a stock: >>> get_dividends(instrument_id="5479")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It clearly describes what data is returned (historical dividend information) and the read-only nature is implied by 'Get' and 'Returns'. However, it doesn't disclose important behavioral traits like whether there are rate limits, authentication requirements, data freshness, or error conditions for invalid instrument IDs.
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 well-structured with clear sections (description, returns, examples) and front-loads the core purpose. While comprehensive, some sentences like 'Useful for income investors and dividend analysis' could be considered slightly redundant given the tool's obvious purpose, but overall it's efficiently organized.
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 (single parameter, historical data retrieval), no annotations, and the presence of an output schema (implied by the Returns section), the description provides good coverage. It explains the parameter source, shows usage examples, and documents the return structure. The main gap is lack of behavioral constraints disclosure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides excellent parameter semantics despite 0% schema description coverage. It clearly explains that 'instrument_id' is an 'Avanza instrument ID from search results' and shows a concrete example ('5479'). This fully compensates for the lack of schema descriptions and gives the agent crucial context about where to obtain valid parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get historical dividend data for a stock' with specific details about what data is returned (dividend history by year including amounts, dates, and yields). It distinguishes from siblings like get_stock_info or get_stock_analysis by focusing specifically on dividends, but doesn't explicitly contrast with all sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context: 'Useful for income investors and dividend analysis' and shows an example with a specific instrument ID. However, it doesn't explicitly state when to use this tool versus alternatives like get_stock_info (which might include dividend data) or get_company_financials, nor does it mention prerequisites like needing to first search for instrument IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_chartA
Get fund chart data with historical performance.
Returns time series data showing fund performance over the selected period. Perfect for visualizing fund NAV history and performance trends.
Args: ctx: MCP context for logging instrument_id: Avanza fund ID from search results time_period: Time period for chart data. Options: - "one_week": Past week - "one_month": Past month - "three_months": Past 3 months - "one_year": Past year - "three_years": Past 3 years (default) - "five_years": Past 5 years - "this_year": Year to date
Returns: Chart data with: - id: Fund identifier - name: Fund name - dataSerie: Array of data points with timestamp (x) and value (y) - fromDate: Start date of chart data - toDate: End date of chart data
Examples: Get 3-year performance chart: >>> get_fund_chart(instrument_id="41567", time_period="three_years")
Get year-to-date performance:
>>> get_fund_chart(instrument_id="41567", time_period="this_year")| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes | ||
| time_period | No | three_years |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It describes the return format in detail ('Chart data with: id, name, dataSerie, fromDate, toDate'), which adds value beyond the input schema. However, it doesn't disclose behavioral traits like rate limits, authentication needs, error handling, or whether it's a read-only operation (though 'get' implies read-only). The description is helpful but incomplete for behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (description, args, returns, examples) and front-loaded key information. It's appropriately sized for a tool with 2 parameters and detailed returns. However, some redundancy exists (e.g., repeating 'Returns' in both the description and a separate section), and the examples could be more concise, slightly reducing efficiency.
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 complexity (2 parameters, enum options, detailed output), the description is mostly complete. It explains parameters thoroughly, describes the return structure, and includes examples. Since an output schema exists (implied by 'Has output schema: true'), the description doesn't need to explain return values in depth, but it does so anyway. Minor gaps include lack of error handling or rate limit info, but overall it's sufficient for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully. It provides detailed semantics for both parameters: 'instrument_id: Avanza fund ID from search results' and 'time_period: Time period for chart data' with a comprehensive list of enum options and explanations. This adds significant meaning beyond what the bare schema provides, fully documenting parameter usage and 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 tool's purpose: 'Get fund chart data with historical performance' and 'Returns time series data showing fund performance over the selected period.' It specifies the resource (fund chart data) and verb (get/retrieve). However, it doesn't explicitly differentiate from sibling tools like 'get_stock_chart' or 'get_fund_chart_periods', which would require a 5.
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 implied usage context: 'Perfect for visualizing fund NAV history and performance trends.' It suggests when to use the tool (for visualization of fund performance) but doesn't explicitly state when NOT to use it or mention alternatives like 'get_stock_chart' for stocks versus funds. No explicit guidance on prerequisites or comparisons with siblings is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_chart_periodsA
Get available fund performance periods with returns.
Returns a list of all available time periods with the fund's performance (percentage change) for each period. Useful for quick performance overview.
Args: ctx: MCP context for logging instrument_id: Avanza fund ID from search results
Returns: List of performance periods, each containing: - timePeriod: Period identifier (e.g., "one_year", "three_years") - change: Performance change as percentage - startDate: Start date for the period
Examples: Get all available performance periods: >>> get_fund_chart_periods(instrument_id="41567")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 describes the return format (list of periods with fields) and hints at read-only behavior ('Get'), but lacks details on error handling, rate limits, authentication needs, or data freshness. It adds some value but leaves gaps 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 appropriately sized and front-loaded, with the core purpose stated first, followed by returns details, usage context, and a clear example. Every sentence adds value without redundancy, and the structure is logical and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no annotations, but with an output schema), the description is mostly complete. It explains the purpose, parameter semantics, and return structure, though it could benefit from more behavioral details like error cases or data limitations. The output schema likely covers return values, reducing the need for extensive output explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the input schema, which has 0% description coverage. It explains that 'instrument_id' is an 'Avanza fund ID from search results', clarifying its source and purpose. Since there is only one parameter, the baseline is 4, and the description compensates well for the schema's lack of 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 specific action ('Get available fund performance periods with returns') and resource ('fund performance periods'), distinguishing it from siblings like get_fund_info or get_fund_chart by focusing on period-based performance data rather than general information or chart visuals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context ('Useful for quick performance overview') and implies usage for performance analysis, but does not explicitly state when to use this tool versus alternatives like get_fund_chart or get_fund_info, nor does it specify exclusions or prerequisites beyond needing an instrument_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_descriptionA
Get detailed fund description and category information.
Provides comprehensive textual description of the fund, its investment strategy, and detailed category classification.
Args: ctx: MCP context for logging instrument_id: Avanza fund ID from search results
Returns: Fund description data with: - response: Main fund description text - heading: Description heading/title - detailedCategoryDescription: Detailed category explanation
Examples: Get fund description: >>> get_fund_description(instrument_id="41567")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 describes what data is returned (e.g., description text, heading, category explanation) but doesn't cover critical aspects like whether this is a read-only operation, potential rate limits, authentication needs, error handling, or data freshness. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded, starting with a clear purpose statement followed by details on what it provides, args, returns, and an example. Every sentence adds value without redundancy, and the example enhances clarity. It's appropriately sized for the tool's complexity, making it efficient and 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 tool's low complexity (1 parameter, no nested objects) and the presence of an output schema (which covers return values), the description is largely complete. It explains the purpose, parameter semantics, and return structure adequately. However, the lack of annotations means some behavioral aspects (e.g., safety, performance) are undocumented, slightly reducing completeness for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter by specifying that instrument_id is an 'Avanza fund ID from search results', which clarifies its source and format beyond the schema's basic string type. With 0% schema description coverage and only one parameter, this compensation is effective, though it could be more detailed (e.g., explaining ID format or validation).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get detailed fund description and category information') and resources ('fund'), making it immediately understandable. It distinguishes this tool from siblings like get_fund_info or get_fund_holdings by focusing on textual descriptions and category classification rather than numerical data or holdings. However, it doesn't explicitly contrast with all similar tools, keeping it from a perfect score.
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 by specifying that instrument_id comes 'from search results', suggesting this tool should be used after a search. However, it doesn't provide explicit guidance on when to use this versus alternatives like get_fund_info or get_stock_info, nor does it mention any exclusions or prerequisites. The context is clear but lacks detailed comparative instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_holdingsA
Get fund portfolio holdings and allocation breakdown.
Returns the fund's portfolio composition including geographic allocation, sector allocation, and top holdings. Useful for understanding what the fund invests in.
Args: ctx: MCP context for logging instrument_id: Avanza fund ID from search results
Returns: Portfolio allocation data with: - countryChartData: Geographic allocation by country (name, y=percentage) - sectorChartData: Sector allocation (name, y=percentage) - holdingChartData: Top holdings (name, y=percentage) - portfolioDate: Date of portfolio data
Examples: Get holdings for a fund: >>> get_fund_holdings(instrument_id="878733")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 describes what the tool returns (portfolio data with specific fields) and implies it's a read operation ('Get'), but doesn't mention potential limitations like rate limits, authentication requirements, data freshness (beyond portfolioDate), or error conditions. The description adds basic context but lacks comprehensive behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose statement, return value details, parameter explanation, and example. It's appropriately sized at 7 sentences. Minor improvements could include bolding key terms or reducing redundancy (e.g., 'portfolio allocation data' appears twice). Overall, it's efficient and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 parameter with 0% schema coverage but good description compensation, no annotations, and an output schema exists (implied by 'Returns' section), the description is reasonably complete. It explains the parameter meaning, return structure, and includes an example. However, it could better address behavioral aspects like data sources or limitations to fully compensate for the lack of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage (no parameter descriptions in schema), but the description compensates fully. It explains the 'instrument_id' parameter as 'Avanza fund ID from search results' and provides a concrete example with '878733'. This adds crucial meaning beyond the bare schema, telling the agent exactly what format and source this parameter requires.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get fund portfolio holdings and allocation breakdown' with specific details about what it returns (geographic allocation, sector allocation, top holdings). It distinguishes from siblings like get_fund_info or get_fund_description by focusing specifically on portfolio composition rather than general information or descriptions. However, it doesn't explicitly contrast with all similar siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: 'Useful for understanding what the fund invests in' and includes an example with a specific fund ID. However, it doesn't explicitly state when to use this tool versus alternatives like get_fund_info or get_fund_description, nor does it mention prerequisites or exclusions. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_infoA
Get detailed information about a mutual fund.
Provides comprehensive fund data including NAV (Net Asset Value), performance over various time periods, risk metrics, fees, and fund characteristics.
Use search_instruments() with instrument_type="fund" to find fund IDs.
Args: ctx: MCP context for logging instrument_id: Avanza fund ID from search results
Returns: Detailed fund information including: - Basic info: name, ISIN, description, NAV - Performance: returns over 1w, 1m, 3m, YTD, 1y, 3y, 5y, 10y - Risk: risk level (1-7), standard deviation, Sharpe ratio - Fees: ongoing charges, entry/exit fees - Characteristics: fund company, type, category, AUM
Examples: Get info for a specific fund: >>> get_fund_info(instrument_id="12345")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 and does well by detailing what information is returned (e.g., NAV, performance, risk metrics, fees, characteristics) and implying a read-only operation without destructive effects. However, it lacks explicit mention of rate limits, authentication needs, or error handling, leaving some behavioral aspects uncovered.
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 well-structured and front-loaded, starting with the core purpose, followed by details, usage guidelines, args, returns, and an example. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.
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 (1 parameter, no annotations, but with an output schema), the description is largely complete: it covers purpose, usage, parameters, and return details. However, it could improve by explicitly stating it's a read-only operation or addressing potential errors, though the output schema mitigates some 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?
The input schema has 0% description coverage, but the description compensates by explaining that 'instrument_id' is an 'Avanza fund ID from search results,' adding crucial context beyond the schema's type definition. It also includes an example usage, though it doesn't detail format constraints or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get detailed information') and resource ('about a mutual fund'), distinguishing it from siblings like get_fund_chart, get_fund_holdings, or get_fund_description by emphasizing comprehensive data including NAV, performance, risk metrics, fees, and characteristics.
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?
It explicitly provides when-to-use guidance by directing users to 'Use search_instruments() with instrument_type="fund" to find fund IDs,' and distinguishes from alternatives by specifying this tool is for detailed fund info, not charts, holdings, or descriptions, making it clear when to choose this over sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_sustainabilityA
Get fund sustainability and ESG (Environmental, Social, Governance) metrics.
Provides comprehensive ESG ratings, carbon metrics, product involvement data, and sustainability development goals aligned with the fund.
Use search_instruments() with instrument_type="fund" to find fund IDs.
Args: ctx: MCP context for logging instrument_id: Avanza fund ID from search results
Returns: Sustainability metrics including: - lowCarbon: Whether fund is low carbon - esgScore: Overall ESG score - environmentalScore: Environmental performance score - socialScore: Social responsibility score - governanceScore: Corporate governance score - controversyScore: Controversy involvement score - sustainabilityRating: Overall sustainability rating (1-5) - productInvolvements: List of controversial product involvements - sustainabilityDevelopmentGoals: UN SDG alignments - Various fossil fuel and carbon involvement metrics
Examples: Get ESG metrics for a fund: >>> get_fund_sustainability(instrument_id="41567")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 adequately describes what the tool returns (comprehensive ESG metrics) but doesn't mention potential limitations like rate limits, authentication requirements, error conditions, or whether the data is real-time versus cached. It provides functional context but lacks operational transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, usage guidance, args, returns, examples) and front-loaded information. While slightly verbose in listing all return metrics, each sentence adds value, and the example is practical. Minor trimming of the returns list could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter, no annotations, but with output schema), the description is reasonably complete. It covers purpose, prerequisites, parameter semantics, and return values in detail. The presence of an output schema reduces the need to fully document returns, but the description still provides helpful context about the metrics structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that 'instrument_id' is an 'Avanza fund ID from search results' and provides an example value ('41567'), clarifying the parameter's purpose and format. For a single parameter with no schema documentation, this compensation is substantial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get fund sustainability and ESG metrics') and resources ('fund'), distinguishing it from sibling tools like get_fund_info or get_fund_holdings by focusing exclusively on sustainability metrics rather than general information or holdings data.
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 explicit guidance on when to use this tool versus alternatives: it instructs to 'Use search_instruments() with instrument_type="fund" to find fund IDs' before invoking this tool, clearly establishing a prerequisite workflow and distinguishing it from direct search or other fund-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instrument_by_order_book_idA
Look up a financial instrument by its order book ID.
The order book ID is the unique identifier returned from search results.
Args: ctx: MCP context for logging order_book_id: Order book ID to search for
Returns: First matching search hit if found, None otherwise
Examples: Look up by order book ID: >>> get_instrument_by_order_book_id(order_book_id="878733")
| Name | Required | Description | Default |
|---|---|---|---|
| order_book_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 mentions that the tool returns 'First matching search hit if found, None otherwise,' which clarifies the return behavior. However, it lacks details on error handling, rate limits, authentication needs, or whether this is a read-only operation. For a lookup tool with zero annotation coverage, this leaves significant behavioral 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 well-structured and front-loaded with the core purpose, followed by sections for Args, Returns, and Examples. Every sentence adds value: the first defines the tool, the second explains the parameter source, and the rest provide implementation details. There's no wasted text, making it efficient and 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 tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers the purpose, parameter semantics, and return behavior, though it lacks details on errors or operational constraints. For a simple lookup tool, this is sufficient but could be enhanced with more behavioral context.
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 0%, so the description must compensate. It adds meaning by explaining that 'order_book_id' is 'the unique identifier returned from search results,' providing context beyond the schema's basic string type. However, it doesn't specify format constraints (e.g., numeric string) or examples beyond one case, leaving some ambiguity. With only one parameter, this is adequate but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Look up a financial instrument by its order book ID.' It specifies the verb ('look up') and resource ('financial instrument'), and distinguishes it from siblings like 'search_instruments' by focusing on ID-based lookup rather than general search. However, it doesn't explicitly contrast with 'get_orderbook' or 'get_stock_info', which might also retrieve instrument data, leaving some sibling differentiation incomplete.
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 by stating 'The order book ID is the unique identifier returned from search results,' suggesting this tool should be used after obtaining an ID from search operations. It doesn't provide explicit when-to-use vs. when-not-to-use guidance or name alternatives like 'search_instruments' for broader queries, leaving usage context somewhat inferred rather than clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_marketplace_infoA
Get marketplace status and trading hours for an instrument.
Provides information about whether the market is open, time remaining until close, and today's opening/closing times.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID from search results
Returns: Marketplace information with: - marketOpen: Boolean indicating if market is currently open - timeLeftMs: Milliseconds remaining until market close - openingTime: Today's market opening time - todayClosingTime: Today's market closing time - normalClosingTime: Standard market closing time
Examples: Check if market is open: >>> get_marketplace_info(instrument_id="5269")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 effectively describes what the tool returns (market status, timing information) and the specific data structure. It doesn't mention rate limits, authentication needs, or error conditions, but provides clear behavioral context about the information returned.
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 with a clear purpose statement, followed by bullet-point details of what it provides, parameter explanation, return value structure, and a practical example. Every sentence earns its place, and information is front-loaded with the core functionality stated first.
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, no annotations, and the presence of an output schema (implied by the detailed return structure in the description), the description is complete enough. It explains what the tool does, what parameter it needs, what it returns, and provides an example - covering all essential aspects for a read-only informational 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 has 0% description coverage, but the description compensates well by explaining that 'instrument_id' is an 'Avanza instrument ID from search results'. This adds crucial semantic context beyond the schema's basic string type. The description doesn't provide format examples or validation rules, but gives meaningful usage guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get marketplace status and trading hours') and identifies the resource ('for an instrument'). It distinguishes this from sibling tools like get_stock_info or get_stock_quote by focusing specifically on market operational status rather than pricing, analysis, or company data.
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 context by mentioning 'instrument ID from search results' and provides an example for checking market openness. However, it doesn't explicitly state when to use this tool versus alternatives like get_stock_info (which might include market status) or when not to use it. No explicit alternatives or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderbookA
Get real-time order book depth for an instrument.
Shows current buy and sell orders with prices and volumes at each level. Useful for understanding market depth, liquidity, and bid-ask spread.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID
Returns: Order book depth data with: - receivedTime: Timestamp of order book data - levels: Array of price levels, each containing: - buySide: Buy order with price, volume, priceString - sellSide: Sell order with price, volume, priceString
Examples: Get current order book: >>> get_orderbook(instrument_id="5269")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It discloses key behavioral traits: real-time nature, data structure (buy/sell sides with prices/volumes), and timestamping. However, it doesn't mention rate limits, authentication requirements, data freshness guarantees, or potential errors.
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 well-structured and efficiently organized: purpose statement first, followed by utility context, parameter documentation, return value details, and a concrete example. Every sentence adds value with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter, real-time market data), no annotations, and the presence of an output schema (which handles return value documentation), the description is quite complete. It covers purpose, usage context, parameter meaning, and includes an example. The main gap is lack of behavioral constraints like rate limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context beyond the schema. While the schema only shows 'instrument_id' as a required string, the description specifies it's an 'Avanza instrument ID' and provides an example value ('5269'). With 0% schema description coverage, this significantly compensates for the schema's lack of 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 specific action ('Get real-time order book depth') and resource ('for an instrument'), distinguishing it from siblings like get_stock_quote (single price) or get_recent_trades (historical trades). It explicitly mentions what the tool provides: buy/sell orders with prices and volumes at each level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Useful for understanding market depth, liquidity, and bid-ask spread'), which differentiates it from other market data tools. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_tradesA
Get recent trades for an instrument.
Returns a list of the most recent trades with price, volume, timestamp, and trade metadata. Useful for understanding recent trading activity.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID from search results
Returns: List of recent trades, each containing: - buyer: Buyer information - seller: Seller information - dealTime: Trade timestamp - price: Trade price - volume: Trade volume - matchedOnMarket: Market where trade was matched
Examples: Get recent trades: >>> get_recent_trades(instrument_id="5269")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It discloses that the tool returns a list of recent trades with specific fields, which helps understand behavior. However, it lacks details on rate limits, authentication needs, data freshness (e.g., how 'recent' is defined), or pagination. It adds some value but leaves gaps in behavioral context for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, returns, args, returns details, examples) and front-loaded key information. It avoids unnecessary fluff, but the example could be more concise. Overall, it's efficient with minimal waste, earning a high score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter, list output), no annotations, and an output schema exists (implied by 'Returns' details), the description is fairly complete. It covers purpose, parameter meaning, and return structure, though it could benefit from more behavioral context like data recency or error handling. The output schema reduces the need for return value explanation.
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% description coverage, but the description compensates by explaining 'instrument_id: Avanza instrument ID from search results', adding crucial context about the parameter's source and format. Since there's only one parameter, this effectively covers it, though more detail on ID format could improve it. Baseline would be lower without this compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get recent trades for an instrument' with specific details about what it returns (price, volume, timestamp, metadata). It distinguishes from siblings like 'get_broker_trade_summary' or 'get_stock_quote' by focusing on individual trade data rather than summaries or quotes. However, it doesn't explicitly contrast with all siblings, keeping it at 4 instead of 5.
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 context ('Useful for understanding recent trading activity') and suggests when to use it, but lacks explicit guidance on when not to use it or alternatives. For example, it doesn't clarify if this is for real-time vs. historical data or how it differs from 'get_orderbook'. This provides basic implied guidance but misses explicit comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_analysisA
Get detailed stock analysis with key financial ratios.
Provides comprehensive financial analysis including key ratios grouped by:
Annual data (stockKeyRatiosByYear)
Quarterly data (stockKeyRatiosByQuarter)
Quarter-over-quarter comparisons (stockKeyRatiosByQuarterQuarter)
Trailing twelve months (TTM) data (stockKeyRatiosByQuarterTTM)
Company-level annual ratios (companyKeyRatiosByYear)
Use search_instruments() first to find the instrument_id for a stock.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID from search results
Returns: Comprehensive analysis data with: - stockKeyRatiosByYear: Annual financial ratios - stockKeyRatiosByQuarter: Quarterly financial ratios - stockKeyRatiosByQuarterTTM: TTM financial ratios - stockKeyRatiosByQuarterQuarter: Q-o-Q comparisons - companyKeyRatiosByYear: Company-level annual metrics - And more detailed financial analysis data
Examples: Get analysis for Volvo B (ID from search): >>> get_stock_analysis(instrument_id="5479")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It describes what data is returned (financial ratios grouped by time periods) but doesn't disclose behavioral traits like rate limits, authentication needs, error conditions, or whether this is a read-only operation. The description adds value by outlining the structure of returned data but lacks operational context.
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 appropriately sized and front-loaded with the core purpose. Every sentence adds value: the first states the purpose, the second details the data structure, the third provides usage guidance, and the rest document parameters and examples. Minor redundancy exists in listing return data both in bullet points and the 'Returns' section.
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 complexity (financial analysis with multiple data groupings), no annotations, and an output schema exists, the description is reasonably complete. It explains the purpose, usage prerequisites, parameter meaning, and return structure. However, it lacks behavioral context (rate limits, errors) that would be helpful despite the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates well. It explains that instrument_id is 'Avanza instrument ID from search results' and provides an example ('Volvo B (ID from search): >>> get_stock_analysis(instrument_id="5479")'). This adds crucial semantic meaning beyond the bare schema, though it doesn't detail format constraints or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed stock analysis with key financial ratios.' It specifies the verb ('Get') and resource ('stock analysis'), and distinguishes it from siblings like get_stock_info or get_company_financials by focusing on financial ratios rather than general information or raw financials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Use search_instruments() first to find the instrument_id for a stock.' It names the specific alternative tool (search_instruments) that must be used beforehand, providing clear prerequisites and distinguishing it from other stock-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_chartA
Get historical price chart data (OHLC) for a stock.
Retrieves time series price data with Open, High, Low, Close values and volume. Perfect for charting and technical analysis.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID time_period: Time period for chart data. Options: - "today": Intraday data for today - "one_week": Past week - "one_month": Past month - "three_months": Past 3 months - "this_year": Year to date - "one_year": Past year (default) - "three_years": Past 3 years - "five_years": Past 5 years
Returns: Chart data with OHLC values: - ohlc: Array of data points with timestamp, open, high, low, close, volume - metadata: Chart metadata - from/to: Time range - previousClosingPrice: Previous closing price
Examples: Get 1 year daily data: >>> get_stock_chart(instrument_id="5269", time_period="one_year")
Get past week data:
>>> get_stock_chart(instrument_id="5269", time_period="one_week")| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes | ||
| time_period | No | one_year |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 and does so well. It clearly describes what the tool returns (OHLC data, volume, metadata, time range, previous closing price), the data format (array of data points with specific fields), and includes practical examples. However, it doesn't mention potential limitations like rate limits, data freshness, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, parameters, returns, examples) and front-loads the core functionality. While comprehensive, some redundancy exists (e.g., 'Get historical price chart data' and 'Retrieves time series price data' convey similar information). Every sentence earns its place, but minor trimming could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, historical data retrieval), no annotations, but with an output schema, the description provides excellent completeness. It explains what the tool does, documents all parameters thoroughly, describes the return format in detail, and includes practical examples. The output schema existence means the description doesn't need to exhaustively document return values, making this appropriately comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value beyond the input schema, which has 0% description coverage. It thoroughly explains both parameters: instrument_id is described as 'Avanza instrument ID', and time_period gets detailed documentation with all 8 possible values and their meanings. This completely compensates for the schema's lack of descriptions and provides essential context for proper tool invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get historical price chart data', 'Retrieves time series price data') and resources ('for a stock', 'OHLC values and volume'). It distinguishes itself from siblings like get_stock_quote (real-time quotes) and get_stock_info (general information) by focusing specifically on historical chart data for technical analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Perfect for charting and technical analysis'), but doesn't explicitly state when not to use it or mention specific alternatives among the sibling tools. It implies usage through examples but lacks explicit guidance about choosing between this and other stock-related tools like get_stock_quote or get_stock_analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_infoA
Get detailed information about a specific stock.
Provides comprehensive stock data including current price, trading volume, market capitalization, valuation metrics (P/E, P/B ratios), dividend yield, and company description.
Use search_instruments() first to find the instrument_id for a stock.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID from search results
Returns: Detailed stock information including: - quote: Current price, change, volume, trading data - company: Description, CEO, sector, market cap - key_ratios: P/E ratio, dividend yield, volatility, beta - Trading metadata: market, tradeable status
Examples: Get info for Volvo B (ID from search): >>> get_stock_info(instrument_id="5479")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It implies a read-only operation ('Get detailed information') but doesn't explicitly state safety aspects like whether it requires authentication, has rate limits, or potential errors. The description adds value by outlining return data categories but lacks behavioral disclosures about permissions or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a clear purpose statement, usage guideline, parameter explanation, return details, and example. Slightly verbose in listing return categories, but each section adds value. The front-loaded purpose and guideline sentences are effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 parameter with 0% schema coverage and an output schema exists, the description does well by explaining the parameter's semantics and outlining return data categories. It could improve by mentioning authentication needs or error cases, but it's largely complete for a read-only tool with sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains that 'instrument_id' is an 'Avanza instrument ID from search results,' clarifying its source and format beyond the schema's string type. However, it doesn't detail validation rules or example formats beyond the single example, leaving some ambiguity.
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 ('Get detailed information') and resource ('about a specific stock'), distinguishing it from siblings like get_stock_quote (price only) or get_company_financials (financial statements). It lists comprehensive data categories (price, volume, metrics, description) that establish its unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to 'Use search_instruments() first to find the instrument_id for a stock,' providing clear prerequisite guidance. It distinguishes from search_instruments (which finds IDs) and implies when to use this tool versus alternatives like get_stock_quote (less detailed) by emphasizing 'comprehensive' data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_quoteA
Get real-time stock quote with current pricing and trading data.
Provides immediate price information including bid/ask spread, last trade, trading volumes, and real-time status. Lighter weight than get_stock_info.
Args: ctx: MCP context for logging instrument_id: Avanza instrument ID from search results
Returns: Real-time quote data with: - buy: Current buy (bid) price - sell: Current sell (ask) price - last: Last traded price - highest: Highest price today - lowest: Lowest price today - change: Price change - changePercent: Percentage change - totalValueTraded: Total value traded - totalVolumeTraded: Total volume traded - volumeWeightedAveragePrice: VWAP - isRealTime: Whether data is real-time
Examples: Get current quote for a stock: >>> get_stock_quote(instrument_id="5269")
| Name | Required | Description | Default |
|---|---|---|---|
| instrument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well. It discloses key behavioral traits: real-time nature ('real-time stock quote', 'immediate price information'), data freshness ('real-time status'), and performance characteristics ('lighter weight'). However, it doesn't mention rate limits, authentication requirements, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: purpose first, then differentiation, followed by parameter semantics, return values, and an example. Every sentence adds value with zero waste. The bulleted return format is appropriately detailed without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter, real-time data), no annotations, but with an output schema (implied by the detailed return description), the description is complete enough. It covers purpose, differentiation, parameter meaning, return structure, and provides an example - addressing all key aspects an agent needs.
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 has 0% description coverage, so the description must compensate. It provides meaningful context for the single parameter: 'instrument_id: Avanza instrument ID from search results' clarifies the parameter's purpose and source. The example further illustrates usage. However, it doesn't specify format constraints or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get real-time stock quote') and resources ('current pricing and trading data'). It explicitly distinguishes from sibling tool 'get_stock_info' by stating it's 'lighter weight', providing clear 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?
The description provides explicit guidance on when to use this tool versus alternatives: 'Lighter weight than get_stock_info' tells the agent this is the preferred option for basic quote data. It also specifies the required parameter context ('Avanza instrument ID from search results'), giving clear prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_instrumentsA
Search for financial instruments on Avanza.
Searches across stocks, funds, ETFs, certificates, and warrants. Returns detailed search results including price info, sectors, and metadata.
Args: ctx: MCP context for logging query: Search term (company name, ticker symbol, or ISIN) instrument_type: Type of instrument to search for. Options: - "stock": Stocks only - "fund": Mutual funds only - "etf": ETFs only - "certificate": Certificates only - "warrant": Warrants only - "all": All instrument types (default) limit: Maximum number of results to return (1-50, default: 10)
Returns: Search response with: - totalNumberOfHits: Total matching results - hits: Array of search results with: - orderBookId: Unique ID - type: Instrument type (STOCK, FUND, etc.) - title: Name - price: Price information - marketPlaceName: Exchange/market - And more details... - facets: Type breakdowns with counts - searchQuery: The query that was executed
Examples: Search for Volvo stock: >>> search_instruments(query="Volvo", instrument_type="stock", limit=5)
Search for any instrument matching "Global":
>>> search_instruments(query="Global", instrument_type="all", limit=10)| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| instrument_type | No | all | |
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behaviors: it searches across multiple instrument types, returns detailed structured results, supports filtering by type, has default values, and includes examples. It doesn't mention rate limits, authentication needs, or error handling, but covers most operational aspects adequately.
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 well-structured and appropriately sized: it starts with a clear purpose statement, explains scope and returns, then has organized sections for Args, Returns, and Examples. Every sentence adds value with no redundancy, and information is front-loaded with details following logically.
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 (3 parameters, filtering capability), no annotations, and the presence of an output schema, the description is remarkably complete. It covers purpose, parameters with semantics, return structure with examples, and usage context. The output schema means the description doesn't need to exhaustively document return values, and it provides enough for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial meaning beyond the input schema, which has 0% schema description coverage. It explains what 'query' accepts (company name, ticker symbol, or ISIN), details all 'instrument_type' options with descriptions, specifies 'limit' range and default, and provides concrete examples showing parameter usage in 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 tool searches for financial instruments on Avanza across multiple types (stocks, funds, ETFs, certificates, warrants) and returns detailed results including price info, sectors, and metadata. It specifies the verb 'search' and resource 'financial instruments', distinguishing it from sibling tools that focus on specific data retrieval like get_stock_info or get_fund_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: to search across multiple instrument types with filtering options. It doesn't explicitly mention when not to use it or name alternatives among siblings, but the context implies it's for broad searches rather than retrieving specific instrument data by ID (like get_instrument_by_order_book_id).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes targeting specific financial data types (e.g., broker trades, dividends, order books, charts), but some overlap exists between get_stock_info and get_stock_quote (both provide stock pricing data) and between get_fund_chart and get_fund_chart_periods (both related to fund performance periods). The descriptions help clarify differences, but an agent might occasionally confuse these pairs.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_broker_trade_summary, search_instruments, get_orderbook). The naming is predictable and readable throughout the set, with no deviations in style or convention.
With 18 tools, the count is slightly high but reasonable for a comprehensive financial data server covering stocks, funds, and market data. It includes essential operations like search, info retrieval, charts, and analysis, though it could be streamlined by merging some overlapping tools (e.g., stock info and quote).
The toolset provides strong coverage for retrieving financial data, including search, detailed info, charts, dividends, order books, and analysis for stocks and funds. Minor gaps include lack of update/delete operations (expected for read-only data) and no tools for portfolio management or trading actions, but these are likely outside the server's intended scope.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Fetch current stock prices and key data for symbols across global markets. Look up companies like…
Live market data, financial analysis, and portfolio research tools across 10,000+ tickers.
Analyze stocks with summaries, price targets, and analyst recommendations. Track SEC filings, divi…
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time stock quotes, historical price data, financial news, and multi-stock comparisons using Yahoo Finance data. Enables users to access comprehensive financial market information through natural language queries.194MIT
- -licenseNot gradedqualityDmaintenanceProvides real-time and historical stock market data through the Alpha Vantage API. Enables users to get current stock prices and retrieve historical stock data for any major stock symbol via natural language queries.
- FlicenseNot gradedqualityDmaintenanceProvides real-time access to financial market data including stock quotes, company information, cryptocurrency exchange rates, historical options chains, and time series data through the Alpha Vantage API.
- AlicenseCqualityDmaintenanceProvides access to real-time and historical stock market data through the Alpha Vantage API, enabling financial analysis and market data queries through natural language.10074Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AnteWall/avanza-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server