Skip to main content
Glama

openfinance_list_investments

Read-onlyIdempotent

Returns the investment portfolio for a connection (broker or bank with INVESTMENTS product enabled): FIIs, stocks, ETFs, fixed income (CDB/LCI/LCA/Tesouro), mutual funds, retirement (previdência) and COE. Each row carries balance, amount, amountOriginal, amountProfit, lastMonthRate / annualRate / lastTwelveMonthsRate (when available), dueDate, issuer, ISIN, etc. Returns { total:0, results:[], warning } instead of throwing when INVESTMENTS isn't enabled (403) or other upstream errors. DATA INTEGRITY: when MULTIPLE positions come back as TOTAL_WITHDRAWAL with balance/quantity 0 at once (mass zeroing), the tool cross-checks each position's own transaction history upstream; if the zeroing is contradicted (BUY with no sale/redemption/transfer) the response carries data_integrity_warning and the affected rows are flagged integrity:'suspect_zeroed' — treat those balances as UNAVAILABLE (likely a temporary connector failure publishing zeros), never as real R$0, and do NOT sum them into the portfolio.

Bulk support: accepts item_ids for batched execution.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemNo
pageNo
typeNo
item_idNo
item_idsNo
page_sizeNo

TDQS

A3.9/5.0
Behavior5/5

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

The description goes well beyond annotations by detailing return structure, error handling (returns object instead of throwing on 403), and a complex data integrity warning mechanism for mass zeroing. This is valuable context not captured in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose and specific asset types, followed by error handling and data integrity details. It is reasonably concise for the complexity, though a bit lengthy. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

Given the absence of an output schema and the complexity of parameters, the description adequately covers error handling and data integrity but lacks parameter usage guidance. It is sufficient for basic understanding but incomplete for full agent autonomy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, and the tool description does not explain parameters like item, page, type, or page_size. Only item_ids is mentioned briefly for batch support. The description fails to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description explicitly states it returns the investment portfolio for a connection, listing specific asset types (FIIs, stocks, ETFs, etc.). It clearly distinguishes from sibling tools like openfinance_list_investment_transactions by focusing on the portfolio overview rather than transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving investment data but does not explicitly specify when to use this tool versus alternatives, nor does it provide exclusion criteria or prerequisites. The context is clear but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.1/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (e.g., force_sync vs get_item_status, list_accounts vs get_accounts_detail). Minor overlap exists between list_transactions and list_transactions_by_item, and between get_account_balance and list_accounts (which also contains balance), but descriptions clarify when each should be used.

Naming Consistency4/5

All openfinance_* tools follow a consistent snake_case verb_noun pattern (list, get, force_sync, disconnect, update). The generic tools (authenticate, connect, marketplace, report_bug, show_version, toolkit_info) are also lowercase with underscores where needed, though they lack the openfinance prefix. No mixing of camelCase or chaotic patterns, so mostly consistent with minor deviation.

Tool Count3/5

25 tools is on the heavy side for a single server, but justified given the breadth of Open Finance operations (accounts, transactions, bills, loans, investments, connections, categories, provider status). The count is borderline heavy but not excessive for the domain, though some consolidation could be possible (e.g., merging get_account_balance into list_accounts).

Completeness5/5

The tool surface covers the full lifecycle for financial data: listing, getting details, forcing syncs, disconnecting, updating categories, checking provider status, and handling investments/loans/bills. No obvious dead ends; even connection management includes search, connect URLs, and re-authentication flows. The set appears comprehensive for its intended purpose.