Bolsai
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., "@Bolsaicompare PETR4 vs VALE3"
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.
Bolsai - MCP Server
Brazilian financial market data for AI assistants. Query stock prices, fundamentals, dividends, FIIs, and macro indicators from the Brazilian market (B3, CVM, BCB) directly from Claude.
Quick Start
Get a free API key at usebolsai.com
Install:
pip install bolsai-mcpAdd to Claude Desktop (
claude_desktop_config.json):
{
"mcpServers": {
"bolsai": {
"command": "uvx",
"args": ["bolsai-mcp"],
"env": {
"BOLSAI_API_KEY": "sk_your_key_here"
}
}
}
}Or for Claude Code (.mcp.json):
{
"mcpServers": {
"bolsai": {
"command": "bolsai-mcp",
"env": {
"BOLSAI_API_KEY": "sk_your_key_here"
}
}
}
}Related MCP server: big-mcp-b3
Tools
Tool | Description | Example Prompt |
| Current price, daily change, 52w range | "What's PETR4 trading at?" |
| 27+ indicators: P/L, P/VP, ROE, margins | "Show me VALE3 fundamentals" |
| Side-by-side comparison of up to 5 stocks | "Compare PETR4 vs VALE3 vs ITUB4" |
| Dividend yield, annual summary, payments | "What dividends did BBDC4 pay?" |
| Find companies by name or sector | "Find banks listed on B3" |
| OHLCV prices since 1986 with adjustments | "PETR4 prices last month" |
| FII fundamentals + distributions | "Show me HGLG11" |
| SELIC, IPCA, CDI, USD/BRL | "What's the current SELIC rate?" |
| Raw CVM income/balance/cash flow | "PETR4 income statement 2024" |
| Filter stocks by metrics | "Find stocks with DY > 8%" |
Example Conversations
"What's PETR4 trading at?"
PETR4
Price: R$ 36.19
Change: +R$ 0.53 (+1.49%)
Date: 2024-12-30
52-week: R$ 28.44 – R$ 42.15
YTD: +12.34%"Compare PETR4 vs VALE3"
Comparison: PETR4 vs VALE3
Metric PETR4 VALE3
─────────────────────────────────────
P/L 4.89 5.23
P/VP 1.12 1.45
EV/EBITDA 3.21 3.87
ROE 33.20% 27.70%
Net Margin 24.50% 23.10%
DY 12.30% 9.90%
Price R$ 36.19 R$ 58.42Data Coverage
350+ stocks listed on B3
400+ FIIs (Real Estate Investment Funds)
40 years of price history (since 1986)
15+ years of fundamentals (since 2010)
27 indicators including P/L, P/VP, EV/EBITDA, ROE, ROIC, margins
Macro data: SELIC, IPCA, CDI, USD/BRL
Updated daily from official sources (B3, CVM, BCB)
Configuration
Environment Variable | Required | Default | Description |
| Yes | — | API key from usebolsai.com |
| No |
| API base URL |
API Tiers
Free: 200 requests/day. Stock quotes, current fundamentals, company search.
Pro (R$ 49/month): 10,000 requests/day. All tools including history, dividends, financials, macro.
Development
cd mcp-server
pip install -e ".[dev]"
pytest
ruff check . && ruff format .License
MIT
Available Tools
11 toolscompare_stocksA
Compare fundamental indicators across multiple stocks side by side.
Args: tickers: Comma-separated tickers, 2-5 (e.g. "PETR4,VALE3,ITUB4") metrics: Optional comma-separated metrics to show (e.g. "pl,pvp,roe,dividend_yield"). Available: pl, pvp, ev_ebitda, roe, roa, roic, net_margin, gross_margin, ebitda_margin, dividend_yield, close_price, lpa, vpa, debt_equity, p_sr
| Name | Required | Description | Default |
|---|---|---|---|
| metrics | No | ||
| tickers | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 discloses that the tool compares metrics and lists available ones, but does not mention whether it's read-only, auth requirements, rate limits, or output behavior (though output schema exists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and uses a clear structure with bullet points for metrics. While it includes all necessary details, it could be slightly more concise (e.g., removing redundant formatting instructions).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered there. The description explains both parameters adequately. It misses no critical usage context for a compare function, though it could mention if the comparison is restricted to specific market data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds significant meaning: it specifies tickers must be comma-separated and 2-5, and lists all available metrics. This fully compensates for the lack of schema 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 tool's purpose: 'Compare fundamental indicators across multiple stocks side by side.' This is a specific verb-resource combination that distinguishes it from sibling tools like 'get_fundamentals' (single stock) or 'screen_stocks' (filtering by criteria).
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 explains the input format and optional metrics, implying use for comparative analysis. However, it does not explicitly state when to use this tool over siblings or any exclusions (e.g., 'use screen_stocks for filtering instead').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dividendsA
Get dividend history with yield, annual summary, and individual payments.
Works for both stocks and FIIs. FII tickers (ending in 11) are auto-detected.
Args: ticker: Stock or FII ticker (e.g. PETR4, HGLG11) years: Years of history (1-20, default 3)
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions auto-detection of FII tickers but does not disclose safety, rate limits, or authentication needs. Basic behavioral context is present but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one line for purpose, one line for scope, and clear parameter descriptions. No unnecessary words, front-loaded with the most important 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 has only two parameters and an output schema (presumably covering return structure), the description covers the essentials. It lacks details on pagination or limits, but for a dividend history tool, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by providing examples for ticker ('e.g. PETR4, HGLG11') and a range for years ('1-20, default 3'). This adds significant meaning beyond the schema's type and default fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get dividend history with yield, annual summary, and individual payments', specifying the verb, resource, and what is returned. It also notes compatibility with stocks and FIIs, distinguishing itself from sibling tools like get_stock_quote or get_price_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions the tool works for both stocks and FIIs, with auto-detection of FII tickers. While it does not list alternatives or when not to use it, the context is clear enough for the agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fii_detailsA
Get FII (Real Estate Fund) details: P/VP, dividend yield, NAV, and distributions.
Args: ticker: FII ticker (e.g. HGLG11, KNRI11, MXRF11)
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states 'Get... details' without clarifying behavioral traits such as read-only nature, required permissions, or any side effects. For a tool with zero annotation coverage, the description should disclose more behavioral 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 two sentences: the first summarizes the tool's purpose and metrics, the second documents the parameter with examples. No extraneous information, efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and an output schema exists (so return structure is documented), the description adequately covers what the tool does and how to use it. Some additional context (e.g., market or validity) could enhance completeness, but it's largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% meaning the description carries the burden. It adds value by specifying the ticker format and providing concrete examples (HGLG11, KNRI11, MXRF11), which aids correct invocation beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves FII details, listing specific metrics like P/VP, dividend yield, NAV, and distributions. It differentiates from siblings by focusing on Real Estate Funds, contrasting with stock-focused tools like get_stock_quote or compare_stocks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for FII (Real Estate Fund) data through the name and examples, but does not explicitly state when to use this tool vs alternatives, nor does it provide exclusions or prerequisites. Context from siblings suggests differentiation, but direct guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financial_statementsA
Get raw CVM financial statements (income, balance sheet, cash flow).
Args: ticker: Stock ticker (e.g. PETR4) statement_type: DRE (income), BPA (assets), BPP (liabilities), DFC_MI (cash flow), DVA (value added). Default: DRE. report_type: DFP (annual) or ITR (quarterly). Default: DFP. reference_date: Date (YYYY-MM-DD). Default: latest available.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| report_type | No | DFP | |
| reference_date | No | ||
| statement_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions default values for reference_date and statement_type but lacks details on data source, rate limits, error handling, or response format. Basic transparency but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear docstring format, front-loaded purpose, and parameter list. No unnecessary words; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers input parameters including defaults and formats. It provides sufficient context for a financial data retrieval tool with 4 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description fully explains all four parameters: ticker example, statement_type codes, report_type options, and reference_date format. This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get raw CVM financial statements' with specific types (income, balance sheet, cash flow). It distinguishes from sibling tools like 'get_dividends' and 'get_fundamentals' by focusing on financial statements.
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 explains what the tool does but does not provide explicit guidance on when to use it versus alternatives like 'get_fundamentals' or 'screen_stocks'. No when-not or context for selecting this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fundamentalsA
Get fundamental indicators: P/L, P/VP, EV/EBITDA, ROE, margins, debt ratios, and more.
Returns 27+ indicators for Brazilian stocks. Uses the latest available data unless a specific reference_date is provided.
Args: ticker: Stock ticker (e.g. PETR4, VALE3) reference_date: Optional date (YYYY-MM-DD) for historical snapshot
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| reference_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses that it returns 27+ indicators and uses latest data by default, but does not mention side effects, authentication needs, or rate limits. Adequate but could be more comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with key information. The Args section is structured, though there is a minor blank line. No wasted sentences.
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 presence of an output schema, the description does not need to detail return values. It covers purpose, parameters, and data source. Adequately complete for a data retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides clear, meaningful explanations for both parameters: ticker with examples (PETR4, VALE3) and reference_date with format (YYYY-MM-DD) and purpose (historical snapshot).
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 fetches fundamental indicators for Brazilian stocks, listing specific metrics like P/L, P/VP, EV/EBITDA, which distinguishes it from sibling tools like get_dividends or get_price_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains it uses latest data unless reference_date is provided, giving context on when to invoke. However, it does not explicitly mention when not to use or suggest alternatives, but the sibling tool names imply appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_macro_indicatorA
Get Brazilian macroeconomic indicator data.
Args: indicator: One of: selic, selic_target, ipca, cdi, usd_brl, eur_brl limit: Number of data points (default 30)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| indicator | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It lists parameters but does not disclose behavioral traits like read-only status, authentication needs, rate limits, or data source. Minimal transparency beyond parameter listing.
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?
Description is very concise with a clear first sentence and structured parameter list in docstring format. No wasted words or redundancy.
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 presence of an output schema (not shown) and two simple parameters, the description covers basic functionality. However, it lacks context about data freshness, frequency, or meaning of indicators, which would be valuable for a macro data tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It lists allowed indicator values and explains limit as 'number of data points' with default. However, it does not explain what each indicator represents, leaving gaps for agent understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get Brazilian macroeconomic indicator data' with specific indicator names (selic, ipca, etc.), distinguishing it from sibling tools focused on stocks and companies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative guidance, but the tool's focus on Brazilian macro data is implied by context and sibling tools, so usage is implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_historyA
Get historical OHLCV stock prices with adjusted values for splits and dividends.
Data available from 1986 to present.
Args: ticker: Stock ticker (e.g. PETR4) start: Start date (YYYY-MM-DD) end: End date (YYYY-MM-DD) limit: Max data points (default 30, max 5000)
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| limit | No | ||
| start | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that prices are adjusted for splits and dividends, and the data range (1986-present). However, it does not mention that the operation is read-only, any auth requirements, or rate limits. The added context is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with no wasted words. The first sentence states purpose, followed by data range, then parameter list. However, the parameter list in a code block could be more integrated; still, it is front-loaded and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values do not need further explanation. Input parameters are fully documented with examples and defaults. This coverage, combined with the simple nature of the tool (historical data retrieval), makes the description complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides a detailed parameter list with examples (e.g., 'ticker: Stock ticker (e.g. PETR4)'), defaults for 'limit', and format hints for dates. This adds significant meaning beyond the schema's types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get historical OHLCV stock prices with adjusted values for splits and dividends', specifying the verb (get) and resource (historical OHLCV prices). It distinguishes well from sibling tools like get_stock_quote (current price) and get_dividends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., compare_stocks, get_stock_quote). The description mentions data availability (1986-present) but does not advise on scenarios where other tools are more suitable.
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 the current stock price with daily change, 52-week range, and YTD return.
Args: ticker: Brazilian stock ticker (e.g. PETR4, VALE3, ITUB4)
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description bears full burden. It specifies the returned data (daily change, 52-week range, YTD return) but omits potential behavioral traits like data freshness, market open requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus an Args section. The essential information is front-loaded, and there is no extraneous content. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the existence of an output schema, the description is mostly complete. However, it could mention edge cases (e.g., trading hours, currency) for additional clarity. Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'ticker' has 0% schema description coverage, but the description adds market specificity ('Brazilian stock ticker') and concrete examples. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets the current stock price with additional details like daily change, 52-week range, and YTD return. The verb 'get' and resource 'stock quote' are specific. It implicitly distinguishes from siblings like get_price_history or get_fundamentals, but no explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. siblings like compare_stocks or get_dividends. Example tickers are provided but no context about preferred use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sectorsA
List all available sectors with company counts.
Use this to discover valid sector names for search_companies and screen_stocks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 accurately describes the tool as listing sectors with counts, which is a read-only operation. It does not disclose potential side effects or auth requirements, but for a simple list tool with no parameters, this is sufficient.
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 consists of two concise sentences. The first sentence states the primary function, and the second provides usage guidance. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no annotations, but an output schema exists), the description is complete. It tells what the tool returns (sectors with company counts) and how to apply the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100%. Per guidelines, 0 parameters yields a baseline of 4. The description does not add parameter information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all available sectors with company counts,' specifying the verb (list), resource (sectors), and output (company counts). It distinguishes from sibling tools by explicitly mentioning that it provides valid sector names for search_companies and screen_stocks.
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: 'Use this to discover valid sector names for search_companies and screen_stocks.' It indicates when to use the tool but does not explicitly state when not to use it, which is acceptable given the tool's simplicity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_stocksA
Screen ALL Brazilian stocks by fundamental metrics. Scans ~264 companies in one call.
Args: filters: Comma-separated filters like "pl_lt=15,roe_gt=10,dividend_yield_gt=5". Supported metrics: pl, pvp, ev_ebitda, roe, roa, roic, net_margin, gross_margin, ebitda_margin, dividend_yield, debt_equity, net_debt_ebitda, market_cap, lpa, vpa, current_ratio, p_sr, cagr_revenue_5y, cagr_earnings_5y. Use _gt (greater than) or _lt (less than) suffix. sector: Sector filter (e.g. "Bancos", "Energia Elétrica", "Petróleo e Gás") sort: Sort by metric (default: market_cap). Any filterable metric works. order: "asc" or "desc" (default: desc) limit: Max results (default 20)
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | market_cap | |
| limit | No | ||
| order | No | desc | |
| sector | No | ||
| filters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description implies a read-only operation (screening), which is consistent with no annotations. It explains the scope and filter behavior but does not detail rate limits or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections for args, but slightly verbose by repeating default values already present in the schema.
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?
Covers input semantics thoroughly; output schema exists so return values are handled. However, lacks details on pagination or behavior with empty results.
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?
Input schema has 0% description coverage, but the description provides extensive details on each parameter, including filter format, supported metrics, and default 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?
Clearly states it screens all Brazilian stocks by fundamental metrics, scanning ~264 companies. Distinguishes from sibling tools like compare_stocks and get_fundamentals.
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?
Provides clear context for use (screening by fundamental metrics across all stocks) but does not explicitly exclude alternatives or mention when to use this tool versus siblings like search_companies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companiesA
Search for Brazilian listed companies by name or sector.
Use list_sectors first to see valid sector names.
Args: query: Search term for company name (e.g. "Petrobras", "banco") sector: Filter by sector (e.g. "Bancos", "Petróleo e Gás", "Energia Elétrica")
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| sector | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 safe, read-only search but does not explicitly state idempotency, authentication requirements, rate limits, or any side effects. For a simple search tool, this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is extremely concise with two sentences plus parameter list. No wasted words. Front-loaded with the core purpose. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema (not shown), the description covers the essential use case. It specifies the domain (Brazilian listed companies) and the two filtering dimensions. Minor omissions like pagination or matching behavior are acceptable for a straightforward search.
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 query as a search term with examples (e.g., 'Petrobras') and sector as a filter with concrete examples (e.g., 'Bancos'). This adds meaningful context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it searches for Brazilian listed companies by name or sector. Provides examples. Could differentiate more from sibling tools like screen_stocks, but the verb+resource combination is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends using list_sectors first to obtain valid sector names, and gives example values for parameters. Does not explicitly mention when not to use this tool, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
11 tool updates
v0.1.2- First observed
compare_stocks - First observed
get_dividends - First observed
get_fii_details - First observed
get_financial_statements - First observed
get_fundamentals - First observed
get_macro_indicator - First observed
get_price_history - First observed
get_stock_quote - First observed
list_sectors - First observed
screen_stocks - First observed
search_companies
TDQS
Each tool targets a distinct data retrieval or analysis task: comparison, dividends, FII details, financial statements, fundamentals, macro indicators, price history, current quote, sector listing, screening, and company search. No tool overlaps significantly in purpose.
All tool names follow a consistent verb_noun pattern with snake_case. Verbs are descriptive (get_, compare_, list_, screen_, search_) and nouns clearly indicate the resource. No mixing of conventions.
11 tools is well-scoped for a Brazilian stock market data server. Each tool addresses a specific need without redundancy, covering the core data retrieval and analysis workflows.
The toolset covers the full spectrum of fundamental analysis: real-time and historical prices, fundamentals, dividends, financial statements, macro indicators, screening, and company/sector discovery. No obvious gaps for data retrieval purposes.
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
Brazilian financial market data (B3): quotes, fundamentals, dividends, REITs (FIIs), BDRs, crypto, F
Brazilian stock (B3) fundamentals: ratios, multiples, dividends, scores. Public methodology.
Cross-asset market data for AI agents: forex, equities, Brazil macro (BCB/B3), crypto.
Brazilian fixed income & financial data for AI. Selic, CDI, IPCA, CDB/LCI/LCA rankings, FX rates.
Related MCP Servers
- FlicenseAqualityDmaintenanceProvides AI assistants with real-time stock prices, financial statements, SEC filings, and analytical tools like DCF valuation and ratio analysis.14-
- AlicenseBqualityCmaintenanceMCP server for B3 (Brazilian stock exchange) data, offering tools for real-time quotes, historical prices, dividends, FIIs, fundamental analysis, options, and indices via natural language.9MIT
- AlicenseNot gradedqualityCmaintenanceProvides AI agents with clean, normalized access to financial data including company fundamentals, insider trades, SEC filings, macro series from FRED, real-time quotes, and ETF holdings.MIT
- AlicenseBqualityBmaintenanceProvides real-time market data, technical analysis, screeners, and backtesting for stocks, crypto, forex, and futures across global exchanges, enabling AI assistants to fetch quotes, indicators, and strategy results via natural language.371MIT
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/viniciuslazzari/bolsai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server