Skip to main content
Glama
Mathankarthik18

Corpus MCP Server

Corpus MCP Server

A Model Context Protocol (MCP) server for the Corpus Tracker application. This server allows AI assistants (like Claude) to securely interact with your financial portfolio, enabling them to fetch holdings, analyze net worth, and manage transactions.

Features

  • Portfolio Analytics: Fetch net worth, asset allocation, and top holdings.

  • Asset Management: List, add, and remove Gold and Stock holdings.

  • Finance Tracking: Log income and expenses, view transaction history, and analyze cash flow.

  • Secure Authentication: Uses API Key authentication to communicate with your Corpus Tracker backend.

Related MCP server: Wealthfolio MCP Server

Available Tools

Profile & Management

  • get_my_profile: Get the current user's profile and settings.

  • list_corpora: List all corpora (profiles) the user belongs to.

Analytics

  • get_portfolio_summary: Get aggregated net worth, asset breakdown, and liabilities.

  • get_top_holdings(limit): Get top holdings by value.

  • get_portfolio_history: Get portfolio history.

Gold Holdings

  • list_gold_holdings: List all gold holdings.

  • add_gold_holding(weight_grams, purchase_price, purchase_date): Add a new gold holding.

  • delete_gold_holding(holding_id): Delete a gold holding by ID.

  • live_gold_price(): Get live gold price.

  • history_of_gold_price(limit): Get history of gold price.

Stock Holdings

  • list_stock_holdings: List all stock holdings.

  • add_stock_holding(symbol, quantity, avg_price): Add a new stock holding.

  • update_stock_holding(holding_id, symbol, quantity, avg_price): Update an existing stock holding.

  • delete_stock_holding(holding_id): Delete a stock holding by ID.

  • live_stock_price(symbol): Get live stock price.

  • history_of_stock_price(symbol, limit): Get history of stock price.

Financial Transactions

  • list_transactions(start_date, end_date, category, type, limit): List transactions with filters.

  • add_transaction(type, amount, category, description, date): Add a new income or expense transaction.

  • delete_transaction(txn_id): Delete a transaction by ID.

  • get_cashflow_trend(days): Get income vs expense trend for the last N days.

Stock Transactions

  • search_stock_symbol(query): Search for stock symbols.

  • add_stock_transaction(symbol, holding_id, transaction_type, quantity, price_per_share, transaction_date, notes): Add a new stock transaction.

Mutual Fund Holdings

  • list_mutual_fund_holdings: List all mutual fund holdings.

Emergency Fund Management

  • list_emergency_fund_holdings: List all emergency fund holdings.

  • add_emergency_fund_contribution(amount, date, source, notes): Add a new emergency fund contribution.

Installation

pip install corpus-mcp

Configuration

The server requires two environment variables to connect to your backend:

  • API_URL: The URL of your Corpus Tracker backend API (e.g., https://my-corpus.vercel.app/api/v1).

  • API_KEY: Your personal API Key generated from the Corpus Tracker settings.

Usage

Running Standalone

You can run the server directly:

# Set environment variables
export API_URL="https://my-corpus.vercel.app/api/v1"
export API_KEY="sk_..."

# Run the server
corpus-mcp

Using with Claude Desktop

Add the following configuration to your claude_desktop_config.json:

{
  "mcpServers": {
    "corpus-tracker": {
      "command": "uvx",
      "args": [
        "corpus-mcp"
      ],
      "env": {
        "API_URL": "https://my-corpus.vercel.app/api/v1",
        "API_KEY": "your_api_key_here"
      }
    }
  }
}

Development

To install dependencies and run locally:

# Install dependencies
pip install .

# Run dev server
corpus-mcp

License

MIT

Available Tools

24 tools
add_emergency_fund_contributionC

Add a new emergency fund contribution.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYes
dateYes
sourceYes
notesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. The word 'Add' implies a write operation, but the description discloses nothing about side effects, validation rules, idempotency, or the nature of the output (despite an output schema existing).

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

Conciseness3/5

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

The single-sentence structure is efficient and front-loaded, but inappropriately terse given the tool's complexity (4 required parameters, mutation behavior, no annotations). It wastes no words but leaves critical information omitted.

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

Completeness2/5

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

Given the 4-parameter mutation complexity, complete lack of schema descriptions, and absent annotations, the description is insufficient. It does not explain the domain model (what constitutes an emergency fund contribution) or parameter semantics needed for successful invocation.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no parameter guidance. The agent receives no information about expected date formats, currency units for amount, or expected values for 'source' and 'notes'.

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

Purpose3/5

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

The description states the basic action (add) and resource (emergency fund contribution) using specific verbs, but fails to distinguish this tool from the generic `add_transaction` sibling or clarify when to use this specific tool versus other asset-tracking tools.

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

Usage Guidelines2/5

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

No guidance provided on when to use this tool versus alternatives like `add_transaction`, nor any mention of prerequisites (e.g., whether an emergency fund must be initialized first) or workflow context.

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

add_gold_holdingC

Add a new gold holding. purchase_date: YYYY-MM-DD format

ParametersJSON Schema
NameRequiredDescriptionDefault
weight_gramsYes
purchase_priceYes
purchase_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but only reveals the date format constraint. It fails to disclose mutation side effects (does it update portfolio totals automatically?), idempotency behavior, error scenarios (duplicate handling), or what the output schema represents despite having an output schema available.

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?

Extremely brief (two lines) with the core purpose front-loaded. However, the second line awkwardly embeds parameter schema documentation into the main description rather than using structured schema descriptions, slightly hurting clarity.

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

Completeness2/5

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

Inadequate for a financial mutation operation with three undocumented parameters. Missing: currency expectations, market data source implications, relationships to sibling tools like list_gold_holdings or delete_gold_holding, and error handling context. Relies entirely on external schema for return values.

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

Parameters2/5

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

Schema has 0% description coverage, requiring the description to compensate. It only partially documents one parameter (purchase_date format) while leaving weight_grams (units? total?) and purchase_price (total vs per gram? currency?) completely unexplained, which is critical ambiguity for a financial instrument.

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

Purpose4/5

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

States a clear verb ('Add') and resource ('gold holding'), distinguishing it from sibling tools like add_stock_holding and add_emergency_fund_contribution by specifying the asset type. However, it lacks scope specificity (e.g., whether this creates a new entry or updates existing).

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus alternatives (e.g., when to add vs. update), nor any business logic prerequisites. The only usage-related information is the date format hint, which is parameter documentation rather than usage guidance.

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

add_stock_holdingC

Add a new stock holding. symbol: Stock Symbol (e.g. RELIANCE.NS)

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes
quantityYes
avg_priceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full disclosure burden but offers minimal behavioral context. It implies a mutation ("Add") but does not state whether duplicates are prevented, what currency/unit avg_price expects, what the output schema contains, or error behaviors for invalid symbols.

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

Conciseness3/5

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

Extremely brief at two lines, but the structure is awkward—parameter documentation is appended as a second sentence rather than integrated naturally or omitted in favor of schema descriptions. Not inefficient, but could be better structured.

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

Completeness2/5

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

Inadequate for a mutation tool with three required parameters. Despite having an output schema (reducing the need for return value explanation), the description fails to document two-thirds of required inputs and provides no operational context like idempotency or side effects.

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

Parameters2/5

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

Schema has 0% description coverage, yet the description only partially compensates by documenting `symbol` with a helpful example. It completely omits required parameters `quantity` (shares owned?) and `avg_price` (cost basis?), leaving critical input semantics undefined.

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

Purpose4/5

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

Clearly states the action (Add) and resource (stock holding), identifying this as a portfolio position entry tool. However, it fails to explicitly distinguish itself from the sibling `add_stock_transaction`, which could confuse users about whether to record trades or current holdings here.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus alternatives like `add_stock_transaction` or `update_stock_holding`. Missing prerequisites such as confirming the symbol exists via `search_stock_symbol` first, or whether this is for initial portfolio setup versus ongoing tracking.

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

add_stock_transactionC

Add a new transaction to a stock holdind transaction_type: BUY or SELL

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes
holding_idYes
transaction_typeYes
quantityYes
price_per_shareYes
transaction_dateYes
notesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full disclosure burden but only reveals that transaction_type accepts BUY or SELL. It fails to disclose validation rules (e.g., date formats), currency assumptions, side effects on portfolio calculations, or what the output schema contains.

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

Conciseness2/5

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

Single sentence contains a typo ('holdind') and awkward construction ('stock holdind transaction_type:') that hurts readability. While brief, the lack of punctuation between clauses and the typographical error reduce clarity rather than support it.

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

Completeness2/5

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

Inadequate for a 7-parameter mutation tool with no annotations. The description ignores the existing output schema, omits validation constraints for required fields, and fails to explain failure modes or data consistency requirements (e.g., symbol/holding_id mismatch handling).

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

Parameters3/5

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

With 0% schema description coverage, the description minimally compensates by documenting the BUY/SELL enum constraint for transaction_type. However, it leaves 6 other parameters unexplained, including critical semantics like the relationship between symbol and holding_id, date format expectations, or currency units for price_per_share.

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

Purpose3/5

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

States the core action ('Add a new transaction') and resource ('stock holding'), though contains a typo ('holdind'). It distinguishes from siblings like add_gold_holding by mentioning 'stock', but fails to differentiate from the generic 'add_transaction' sibling.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus the generic 'add_transaction' sibling, nor prerequisites like whether the holding_id must exist beforehand. No exclusion criteria or alternatives mentioned.

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

add_transactionB

Add a new income or expense transaction. type: "income" or "expense" category: get user category from get_categories tool

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
amountYes
categoryYes
descriptionNo
dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full disclosure burden but only enumerates valid values for the "type" parameter. It fails to mention side effects, reversibility (despite delete_transaction existing), validation rules (e.g., amount precision), or output format.

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 core purpose followed by inline parameter hints. There is no redundant prose, though extreme brevity leaves significant documentation gaps given the parameter complexity.

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 5 parameters with 0% schema coverage and no annotations, the description provides only minimum viable context. The get_categories dependency is noted, but critical details like date formats, amount constraints, and the optional nature of description/date are omitted despite being required for correct usage.

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

Parameters3/5

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

Schema description coverage is 0%, requiring the description to compensate. It adds critical meaning for "type" (valid values) and "category" (source tool), but leaves "amount", "description", and "date" completely undocumented, including format requirements and optionality.

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 "Add a new income or expense transaction" explicitly states the action (Add), resource (transaction), and domain (income/expense), effectively distinguishing it from siblings like add_stock_holding or add_emergency_fund_contribution which handle other asset types.

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?

While it lacks explicit when/when-not comparisons to alternatives, it provides a concrete prerequisite: "category: get user category from get_categories tool," offering operational guidance for successfully invoking the tool.

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

delete_gold_holdingC

Delete a gold holding by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
holding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. 'Delete' implies destruction but lacks disclosure on permanence, error behavior (ID not found), or return value (despite output schema existing). Critical safety context missing for destructive operation.

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

Conciseness5/5

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

Extremely concise single sentence (6 words). No redundancy or filler. Front-loaded with verb and object.

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

Completeness2/5

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

Insufficient for a destructive single-parameter tool. Output schema exists (reducing need to document returns), but description omits irreversibility warnings, confirmation requirements, and error cases that annotations would typically cover.

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

Parameters3/5

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

Schema coverage is 0% (holding_id has no description). Description compensates minimally by mentioning 'by ID', implying the parameter identifies the holding. Lacks details on valid ID formats, constraints, or examples.

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

Purpose4/5

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

States specific verb ('Delete') and resource ('gold holding'), with 'by ID' indicating the identification method. Distinguishes from stock/transaction siblings implicitly via resource name, though explicit differentiation from delete_stock_holding is absent.

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

Usage Guidelines2/5

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

No guidance on when to use versus alternatives, prerequisites (e.g., verifying ID exists), or workflow context (e.g., call after list_gold_holdings).

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

delete_stock_holdingC

Delete a stock holding by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
holding_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. States 'Delete' implying destruction but fails to disclose critical financial operation details: whether action is irreversible, if it cascades to delete transaction history, or impacts portfolio calculations. No mention of authorization requirements.

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?

Extremely concise (5 words) with action front-loaded. No wasted text. However, excessive brevity given the lack of supporting annotations and schema descriptions leaves significant gaps.

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

Completeness2/5

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

Inadequate for a destructive financial operation with zero annotation coverage. Missing: irreversibility warnings, side effects on related records (transactions), parameter sourcing guidance, and success/failure behavior despite existence of output schema.

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

Parameters3/5

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

Schema has 0% description coverage. Description mentions 'by ID', mapping to the holding_id parameter and clarifying its role as identifier. However, fails to explain where to obtain valid IDs (e.g., from list_stock_holdings) or constraints beyond the integer type.

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

Purpose4/5

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

Clear verb ('Delete') and resource ('stock holding'). Effectively distinguishes from sibling delete_gold_holding and delete_transaction by specifying the target resource. Would be 5 if it clarified scope (e.g., whether this removes historical data or just the position).

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

Usage Guidelines2/5

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

Provides no guidance on when to use versus alternatives like update_stock_holding or delete_transaction, nor prerequisites (e.g., requiring liquidation first). Simply states the action without context.

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

delete_transactionC

Delete a transaction by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
txn_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description carries full disclosure burden. 'Delete' implies destructive mutation but lacks details on permanence, cascading effects to related records, error behavior when ID doesn't exist, or what the output schema (which exists) returns.

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

Conciseness4/5

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

Single sentence is appropriately front-loaded with the action. However, given zero annotations and 0% schema coverage, the brevity results in under-specification rather than efficient precision—should be longer to cover behavioral traits.

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

Completeness3/5

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

Adequate for a single-parameter delete operation, but misses key context for a destructive tool: no mention of confirmation requirements, return value structure (despite having output schema), or side effects on portfolio calculations.

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

Parameters3/5

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

With 0% schema description coverage, description partially compensates by indicating the operation uses an 'ID' (mapping to txn_id parameter). However, it omits data type (integer), format constraints, or whether this is a database ID versus external reference.

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

Purpose4/5

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

States specific verb 'Delete' and resource 'transaction' clearly. Distinguishes from siblings like 'add_transaction' or 'list_transactions' by action, but doesn't explicitly clarify domain distinction from 'delete_stock_holding' or 'delete_gold_holding' (though different resource names help).

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

Usage Guidelines2/5

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

No guidance on when to use versus alternatives (e.g., when to use delete_transaction vs delete_stock_holding), prerequisites, or irreversibility warnings. Agent receives no signal about validation rules or dependencies.

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

get_cashflow_trendB

Get income vs expense trend for the last N days.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It discloses the calculation type (income vs expense) and time window, but fails to indicate if this is read-only, what 'trend' format returns (daily aggregates? cumulative? rate of change?), or any rate limiting concerns. Minimal behavioral disclosure.

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

Conciseness5/5

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

Single efficient sentence with zero waste. Front-loaded with action and resource. No redundant boilerplate.

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

Completeness3/5

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

Adequate for a single-parameter analytical tool where output schema exists (handling return value documentation). However, given zero annotations and zero schema coverage, the description could specify whether the trend returns time-series data or summary statistics to ensure complete agent understanding.

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

Parameters4/5

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

Successfully compensates for 0% schema description coverage by referencing 'N days' in the description, clearly mapping to the 'days' parameter's purpose as a lookback window. Despite no schema documentation, the agent understands this parameter controls the historical timeframe.

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

Purpose4/5

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

States specific resource (income vs expense trend) and scope (last N days), distinguishing it from sibling tools like get_portfolio_history (asset values) or list_transactions (individual records). However, uses generic verb 'Get' rather than 'Retrieve' or 'Calculate', and could more explicitly contrast with cashflow analysis alternatives.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this versus list_transactions or get_portfolio_history. No mention of prerequisites, filtering capabilities, or data freshness considerations. Agent must infer applicability from the name alone.

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

get_categoriesB

Get user budget categories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. States only that it retrieves data but omits cache behavior, rate limits, or whether categories include custom/system distinctions. 'Get' implies read-only but lacks safety/scope specifics.

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

Conciseness5/5

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

Four words, front-loaded with action verb, zero redundancy. Appropriate length for parameter-less getter with output schema handling return documentation.

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

Completeness3/5

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

Adequate for a simple retrieval tool given output schema exists to document returns. However, lacks ecosystem context (e.g., relation to add_transaction classification) and behavioral specifics that would elevate it above minimum viable.

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

Parameters4/5

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

Zero parameters per schema, meeting baseline of 4. Description correctly implies no filtering inputs are required.

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

Purpose4/5

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

Clear verb 'Get' and resource 'user budget categories'. Distinguishes from portfolio/profile siblings by specifying 'budget categories', though could explicitly contrast with get_portfolio_summary or get_my_profile.

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

Usage Guidelines2/5

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

No when-to-use guidance, prerequisites, or alternatives mentioned. With siblings like add_transaction and list_transactions, some context on whether categories are user-defined or system defaults would help selection.

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

get_my_profileB

Get the current user's profile and settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. States 'Get' implying read-only access but does not confirm idempotency, safety (no side effects), rate limits, or error conditions (e.g., unauthenticated). Fails to disclose what 'settings' encompasses or whether this triggers any server-side events.

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

Conciseness4/5

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

Single sentence, front-loaded with action verb. Efficient construction with no redundant words, though 'and settings' is slightly vague without elaboration in the schema.

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

Completeness3/5

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

Adequate for a zero-parameter read operation where output schema exists to define the return structure. However, given absent annotations and the financial domain context, it should clarify whether this retrieves account preferences vs application configuration.

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

Parameters4/5

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

Zero parameters present. With no parameters requiring semantic explanation, this meets the baseline expectation.

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

Purpose4/5

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

Uses specific verb 'Get' and identifies resource 'current user's profile and settings' clearly. Distinguishes from financial siblings (get_portfolio_summary, etc.) by specifying 'profile' rather than portfolio data, though could explicitly contrast with financial tools to be a 5.

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

Usage Guidelines2/5

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

Provides no explicit guidance on when to use vs alternatives, prerequisites, or conditions. While the name makes usage somewhat obvious, there is no mention of authentication requirements or when to prefer this over other user-related operations.

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

get_portfolio_historyC

Get portfolio history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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, yet it says nothing about read-only safety, time range limitations, data granularity, or what the history records represent. The only behavioral cue is the verb 'Get' implying retrieval.

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

Conciseness3/5

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

While extremely brief (three words), the description is inappropriately concise—using minimal space to add no new information beyond the tool name. It is front-loaded but fails to earn its place by providing actionable context.

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

Completeness2/5

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

Despite having zero parameters and an output schema (reducing description burden for return values), the description remains incomplete because it omits scope boundaries and sibling differentiation critical for a portfolio analysis tool with many related data retrieval siblings.

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

Parameters4/5

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

The tool accepts zero parameters. Per evaluation rules, tools with zero parameters receive a baseline score of 4 for this dimension, as there are no parameter semantics to clarify beyond the empty schema.

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

Purpose2/5

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

The description 'Get portfolio history' is tautological, essentially restating the tool name with spaces added. It fails to specify what 'history' encompasses (e.g., historical valuations, transaction logs, or performance snapshots) and does not differentiate from siblings like get_portfolio_summary or get_cashflow_trend.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not indicate temporal constraints, whether to use this for analysis vs. reporting, or how it relates to get_portfolio_summary.

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

get_portfolio_summaryA

Get aggregated net worth, asset breakdown, and liabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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 the scope of returned data (net worth, assets, liabilities) but omits behavioral details such as data freshness, whether values are real-time or cached, or how liabilities are calculated against assets.

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

Conciseness5/5

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

Extremely concise at seven words with front-loaded verb ('Get'). Every word serves a purpose: 'aggregated' signals high-level aggregation versus detail listings, while the three nouns define the specific financial metrics returned.

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

Completeness4/5

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

Adequate for a zero-parameter tool with an output schema (per context signals). The description identifies the key return categories, though it could strengthen completeness by indicating whether the summary spans all asset classes represented by the sibling 'add_*' tools.

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

Parameters4/5

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

Input schema contains zero parameters, triggering the baseline score of 4. The description appropriately requires no parameter clarification.

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

Purpose4/5

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

The description states a clear retrieval purpose with specific outputs ('aggregated net worth, asset breakdown, and liabilities'), distinguishing it implicitly from sibling listing tools like list_stock_holdings through the 'aggregated' modifier. However, it lacks explicit differentiation from similar analytical siblings like get_portfolio_history or get_top_holdings.

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

Usage Guidelines2/5

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

No explicit guidance is provided on when to use this summary view versus detailed listing tools (list_*_holdings) or trend analysis (get_cashflow_trend). The agent must infer usage solely from the tool name and description keywords.

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

get_top_holdingsC

Get top holdings by value.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It fails to clarify what defines 'top' (highest market value? largest position?), whether results span all asset types (stocks, gold, emergency funds), or read-only safety. It also doesn't mention the return format despite having an output schema.

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?

Extremely brief at four words with no redundancy, but underspecified given the zero schema coverage and ambiguous scope. Every word earns its place, but the sentence count is insufficient for the information gaps.

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

Completeness2/5

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

Given 0% schema coverage and no annotations, the description must compensate by explaining the holdings scope and parameter usage. It fails to do either, leaving critical operational context undefined despite having an output schema to handle return value documentation.

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

Parameters1/5

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

Schema description coverage is 0% (the 'limit' parameter has no description), yet the description fails to mention or explain this parameter. Complete failure to document the tool's only argument.

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

Purpose3/5

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

States the basic action (Get) and target (top holdings) with sorting criteria (by value), but fails to define which asset types 'holdings' encompasses or distinguish from sibling list_* tools (list_stock_holdings, list_gold_holdings, etc.) that appear to list specific asset types individually.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this aggregated view versus the specific listing tools, nor any prerequisites or conditions for invocation.

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

history_of_gold_priceD

Get history of gold price.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.6/5.0
Behavior1/5

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

No annotations are provided, and the description adds no behavioral context regarding data freshness, caching, rate limits, or what the 'limit' parameter controls (days vs records).

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

Conciseness3/5

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

While extremely brief (four words), the description is not verbose; however, the single sentence fails to earn its place by providing minimal value beyond the function name itself.

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

Completeness2/5

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

Though an output schema exists (reducing the need to describe return values), the complete absence of input parameter documentation and lack of behavioral context make this inadequate for a data retrieval tool.

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

Parameters1/5

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

With 0% schema description coverage for the 'limit' parameter, the description completely fails to compensate by explaining what the limit restricts (e.g., number of historical records returned).

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

Purpose2/5

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

The description 'Get history of gold price' is essentially a tautology of the function name and fails to distinguish from sibling tool 'live_gold_price' or clarify the temporal scope of 'history' (daily, hourly, etc.).

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

Usage Guidelines1/5

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

Provides no guidance on when to use this versus 'live_gold_price' or 'get_portfolio_history', nor does it mention prerequisites like date range selection or data availability.

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

list_corporaB

List all corpora (profiles) the user belongs to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full disclosure burden. While 'user belongs to' implies user-scoped access, the description lacks pagination details, caching behavior, permission requirements, or safety indicators (read-only vs mutation).

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

Conciseness5/5

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

Single sentence with zero waste. Front-loaded with verb 'List'. Parenthetical clarification '(profiles)' is efficient and well-placed.

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

Completeness4/5

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

Adequate for a simple listing tool with output schema present. The clarification of 'corpora' provides sufficient context for this standalone resource, though distinguishing guidance from get_my_profile would improve completeness.

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

Parameters4/5

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

Zero parameters per schema. Baseline score applies as there are no parameters requiring semantic explanation beyond the empty schema.

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

Purpose4/5

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

Clear verb 'List' and resource 'corpora', with helpful parenthetical clarification that corpora means 'profiles'. However, it does not distinguish from sibling get_my_profile, which could cause confusion about which profile-related tool to use.

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

Usage Guidelines2/5

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

No guidance provided on when to use this versus sibling get_my_profile or other user-context tools. No mention of alternatives, prerequisites, or conditions where this tool is preferred.

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

list_emergency_fund_holdingsA

List all emergency fund holdings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosure. It specifies scope ('all') implying no filtering/pagination, and 'List' implies read-only behavior. However, it lacks explicit confirmation of safety, idempotency, or what the return structure looks like (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.

Conciseness5/5

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

Four words, front-loaded with action verb. Every word earns its place. Appropriate length for a zero-parameter retrieval tool.

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

Completeness4/5

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

Given zero input parameters and the presence of an output schema, the description adequately covers the tool's purpose. However, could briefly contextualize emergency funds versus other holdings (cash vs investments) given the financial domain complexity.

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

Parameters4/5

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

Zero parameters present. Per rubric, 0 params equals baseline score of 4. The empty schema requires no additional semantic clarification in the description.

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

Purpose4/5

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

Clear verb ('List') and specific resource ('emergency fund holdings'). Distinguishes from sibling 'list_stock_holdings', 'list_gold_holdings', etc. by specifying the emergency fund asset type. Could achieve 5 by explicitly contrasting with portfolio summary views or relating to the 'add_emergency_fund_contribution' sibling.

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

Usage Guidelines2/5

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

No guidance on when to use this versus 'get_portfolio_summary' or 'get_top_holdings'. Does not mention that it pairs with 'add_emergency_fund_contribution' or when to prefer this over the generic list commands.

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

list_gold_holdingsB

List all gold holdings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. While 'List all' implies a read operation returning stored data, it lacks details on pagination behavior, data freshness/caching, authorization requirements, or what specific attributes of holdings are returned.

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

Conciseness5/5

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

The description consists of a single four-word sentence with zero redundancy, front-loading the action verb ('List') and immediately specifying scope ('all') and resource ('gold holdings').

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

Completeness4/5

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

Given the zero-parameter complexity and presence of an output schema (removing the need to describe return structures), this minimal description provides sufficient context for invocation. However, it could improve by noting if this retrieves physical gold, ETFs, or certificates given the domain.

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

Parameters4/5

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

The input schema contains zero parameters (empty properties object), establishing the baseline score of 4 as there are no parameter semantics to clarify beyond the schema definition.

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

Purpose4/5

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

The description uses the specific verb 'List' and identifies the resource 'gold holdings', distinguishing it from sibling tools like list_stock_holdings or list_emergency_fund_holdings. However, it does not explicitly differentiate from aggregate portfolio views like get_top_holdings or get_portfolio_summary.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites such as account requirements, authentication state, or filters that might be expected given siblings like add_gold_holding and delete_gold_holding.

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

list_mutual_fund_holdingsB

List all mutual fund holdings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosure but reveals no behavioral traits. It does not indicate that this is a read-only operation, mention pagination limits, or describe the return format (though an 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.

Conciseness4/5

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

The single sentence is appropriately sized for a zero-parameter tool and contains no redundant information. However, it is minimal to the point of under-specification, lacking the richness that would earn a top score.

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 tool has zero parameters and an output schema exists, the description is minimally adequate. However, significant gaps remain regarding sibling differentiation and behavioral context that would help an agent select this tool appropriately in a portfolio management context.

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

Parameters4/5

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

The input schema contains zero parameters, which per the guidelines establishes a baseline score of 4. With no parameters to describe, the schema and description are trivially aligned.

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

Purpose4/5

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

The description clearly states the verb (List) and resource (mutual fund holdings), expanding the snake_case name into readable form. However, it fails to distinguish from sibling tools like list_stock_holdings or list_gold_holdings, which are similar list operations for different asset types.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like get_top_holdings or list_stock_holdings, nor does it specify prerequisites or filtering capabilities. It merely states what the tool does.

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

list_stock_holdingsB

List all stock holdings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states the basic action without clarifying read-only safety, pagination behavior, data freshness, or whether 'all' holdings includes delisted/zero-quantity positions.

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

Conciseness5/5

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

Description is a single, efficient four-word sentence with no redundancy. It immediately communicates the core operation without filler, appropriate for a zero-parameter tool.

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

Completeness3/5

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

With zero parameters and an output schema available, the description adequately covers the basic invocation pattern but lacks context regarding how this comprehensive listing relates to sibling aggregation tools (e.g., 'get_portfolio_summary') or filtered views (e.g., 'get_top_holdings').

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

Parameters4/5

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

Input schema contains zero parameters. Per scoring baseline, this dimension receives a default score of 4 as there are no parameter semantics to elaborate upon.

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

Purpose4/5

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

Description clearly states the verb (List) and resource (stock holdings), establishing a clear purpose. However, it does not explicitly differentiate from sibling 'get_top_holdings' (which returns a subset) or 'get_portfolio_summary' (which aggregates across asset classes), leaving some ambiguity about when to prefer this tool over those alternatives.

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

Usage Guidelines2/5

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

Description provides no guidance on when to use this tool versus siblings like 'get_top_holdings' or 'get_portfolio_summary', nor does it mention prerequisites such as authentication requirements or portfolio setup.

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

list_transactionsC

List transactions with filters. Dates in YYYY-MM-DD. Type: 'income', 'expense', or 'all'.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo
end_dateNo
categoryNo
typeNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, yet description fails to disclose pagination behavior (despite 'limit' parameter), sorting order, null handling (all nulls = return all?), or output structure. Only mentions date format and type enum constraints.

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?

Extremely terse three-sentence structure with no waste. Front-loads the purpose. However, given the severe lack of schema documentation, this brevity arguably underserves the agent's information needs.

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?

With output schema present, description correctly omits return value details. However, given 5 parameters with zero schema descriptions and no annotations, the description inadequately covers parameter semantics (missing category and limit) and lacks behavioral context expected for a list operation.

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

Parameters3/5

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

Schema has 0% description coverage. Description compensates by documenting valid 'type' enum values ('income', 'expense', 'all') and date format (YYYY-MM-DD) for temporal fields. However, leaves 'category' values and 'limit' semantics completely undocumented.

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

Purpose4/5

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

Provides specific verb (List) and resource (transactions), indicating filtered retrieval. Lacks explicit differentiation from siblings like get_cashflow_trend that may also return transaction data, though the verb distinguishes from 'add' and 'delete' siblings.

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

Usage Guidelines2/5

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

No guidance on when to use this versus alternatives (e.g., get_cashflow_trend for aggregates), nor when filters are required versus optional. Only provides parameter value hints.

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

live_gold_priceB

Get live gold price.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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 but offers none. It omits critical details such as the currency, weight unit (ounce/gram), data source, or whether the price is delayed or real-time.

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

Conciseness5/5

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

The description consists of four words with zero redundancy, placing the essential information immediately at the front. Every word earns its place in this highly compact formulation.

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 tool has no parameters and an output schema exists (reducing the need to describe return values), the description meets minimum requirements. However, it lacks contextual details that would help distinguish it from historical price tools or clarify the data format.

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

Parameters4/5

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

The input schema contains zero parameters, which establishes a baseline score of 4 according to the evaluation criteria. The description neither adds nor detracts from this empty parameter set.

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

Purpose4/5

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

The description uses a specific verb ('Get') and resource ('live gold price'), making the purpose clear. It implicitly distinguishes from the sibling 'history_of_gold_price' by emphasizing 'live,' though it could further clarify what 'live' means (e.g., current market price).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'history_of_gold_price'. It fails to mention prerequisites, rate limits, or caching considerations that might affect selection.

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

search_stock_symbolC

Get history of stock price.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2/5.0
Behavior2/5

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 but fails to specify the time range of history, data sources, rate limits, or whether the tool returns symbol matches versus actual price data. It does not mention the output schema format.

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

Conciseness3/5

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

While the single sentence is concise and front-loaded, it is under-specified rather than efficiently informative. The brevity constitutes an omission of necessary context given the undocumented parameter and unclear scope.

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

Completeness2/5

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

Given the undocumented parameter, lack of annotations, and likely mismatch between the tool name (suggesting symbol search) and description (suggesting price history), the description is inadequate. While an output schema exists, the input requirements and actual tool purpose remain opaque.

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

Parameters1/5

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

Schema has 0% description coverage for the 'query' parameter. The description adds no clarification about what constitutes a valid query (company name, ticker symbol, partial match, regex, etc.), leaving the single required parameter completely undocumented despite the low schema coverage.

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

Purpose2/5

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

The description states a vague action ('Get history') but contradicts the tool name 'search_stock_symbol', which implies a ticker symbol lookup function rather than price history retrieval. It distinguishes from sibling 'history_of_gold_price' by specifying 'stock', but creates confusion about the actual operation performed.

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

Usage Guidelines2/5

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

No guidance provided on when to use this tool versus alternatives like 'get_portfolio_history' or 'history_of_gold_price', nor any indication of what input the 'query' parameter expects or prerequisites for use.

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

update_stock_holdingC

Update an existing stock holding.

ParametersJSON Schema
NameRequiredDescriptionDefault
holding_idYes
symbolYes
quantityYes
avg_priceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, yet the description fails to disclose mutation semantics: whether update is partial or full replacement, idempotency behavior, or error conditions if the holding_id does not exist.

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

Conciseness3/5

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

Single sentence is concise but underspecified; with four required parameters and a mutation operation, the brevity fails to front-load critical behavioral context, rendering the sentence insufficiently informative.

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

Completeness2/5

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

Despite having an output schema (reducing the need to document returns), the description inadequately covers a complex financial mutation: zero parameter documentation, no annotation coverage, and missing relationship to transaction-based workflows makes this incomplete.

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

Parameters2/5

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

Schema description coverage is 0% (holding_id, symbol, quantity, avg_price all lack descriptions), and the tool description offers no compensation—it does not clarify that avg_price represents cost basis, whether quantity is total shares, or that holding_id must reference an existing record.

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

Purpose3/5

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

States a clear verb and resource ('Update an existing stock holding') but lacks scope differentiation from sibling tool add_stock_transaction, leaving ambiguity whether this modifies holdings directly or through transaction records.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus add_stock_transaction (which likely represents the transactional flow), nor prerequisites like verifying the holding_id exists via list_stock_holdings.

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

TDQS

C2.8/5.0
Disambiguation4/5

Most tools have distinct purposes, but some overlap exists: 'add_stock_transaction' and 'add_transaction' could be confused as both handle transactions, and 'search_stock_symbol' (which gets stock price history) overlaps with 'add_stock_holding' (which involves stock data). Descriptions help clarify, but minor ambiguity remains.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as 'add_emergency_fund_contribution', 'list_gold_holdings', 'get_cashflow_trend', and 'delete_transaction'. There are no deviations in style or convention, making the set predictable and readable.

Tool Count3/5

With 24 tools, the count is borderline heavy for a personal finance server, as it may overwhelm agents with many similar listing and adding operations. While comprehensive, it could be streamlined without losing functionality, placing it in the upper range of typical scopes.

Completeness4/5

The server provides strong coverage for personal finance management, including CRUD operations for holdings and transactions, analytics like cashflow trends, and portfolio summaries. Minor gaps exist, such as no update tools for emergency funds or mutual funds, but agents can work around these with available tools.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables personal financial management through AI assistants by providing tools to add transactions, check balances, list transaction history, and generate monthly summaries. Supports natural language interaction for tracking income and expenses with categorization.
    1
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI-powered portfolio analysis for Wealthfolio, allowing Claude to query and analyze investment holdings, asset allocation, real estate properties, and execute transactions through natural language.
    1
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to interact with your Lunch Money personal finance data, providing tools for managing transactions, categories, budgets, assets, and accounts.
    15
    24
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Integrates with Rotki portfolio tracker to provide portfolio overview, prices, transaction history, and analytics through intuitive tools for AI assistants.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mathankarthik18/corpus-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server