Skip to main content
Glama
steamau

Beeswax Shares MCP Server

by steamau

Attribute cash income to a holding

attribute_cash_transaction

Attribute an unmatched cash credit from a bank account to the holding that earned it, creating a security transaction and marking the cash row as the matched settlement leg to prevent double counting.

Instructions

Link an income credit already sitting on a bank account — e.g. a dividend or distribution that landed via the bank feed — to the holding that earned it. Recognises the income on a NEW security transaction (the single source of truth Holding, Fund and the tax summaries read income & franking from) and marks this cash row as its matched settlement leg, so income is counted exactly once. Unlike record_income this is a DIRECT write, NOT a Review-Queue proposal: the cash has already arrived, you are only saying which holding it belongs to. The row must be a credit (money in) that isn't already linked to a transaction — find candidates with list_cash_transactions (match_status "unmatched", category income_* or uncategorised). Identify the holding by ticker (preferred) or holding_id, and include franking_credits for franked dividends. Undo from the app (Detach) if you pick the wrong holding.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesNo
tickerNoTicker of the holding that earned the income (preferred identifier)
fund_idYesFund ID (discover via whoami or list_funds)
holding_idNoHolding ID, if already known (alternative to ticker)
income_typeNoIncome type to recognise; defaults from the row's category, else "dividend"
payment_dateNoPayment date (defaults to the cash row's posted date) as an ISO date, e.g. "2026-05-30"
bank_account_idYesBank account the cash row is on (find via list_bank_accounts)
ex_dividend_dateNoEx-dividend date as an ISO date, e.g. "2026-05-30"
franking_creditsNoFranking credits attached (AUD) — for franked dividends
cash_transaction_idYesThe income cash row to attribute (find via list_cash_transactions)
franking_percentageNoFranking percentage 0–100, for partially-franked dividends
Behavior4/5

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

Annotations indicate write (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds that this is a direct write (not a proposal), marks the cash row as matched, and that income is counted exactly once. It also mentions that the action can be undone via the app's 'Detach' feature, providing valuable behavioral context beyond the 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 well-structured: it starts with the main purpose, then details the effect, distinguishes from alternatives, provides prerequisites, and ends with an undo note. While it is somewhat lengthy, every sentence adds relevant information, and it is front-loaded with the core action.

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 tool's complexity (11 parameters, 3 required) and no output schema, the description covers essential context: what the tool does, how to prepare (find unmatched cash transactions), how to identify the holding, and what to do if wrong. It does not discuss return values, but that is acceptable without an 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 description coverage is 91%, so most parameters are already described. The description adds context for a few key parameters (e.g., 'ticker preferred', 'franking_credits for franked dividends'), but this is minimal additional value. Overall, the description does not significantly enhance understanding beyond the schema.

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 uses a specific verb ('Link') and specifies the exact resource ('income credit on a bank account' to 'the holding that earned it'). It clearly distinguishes the tool's function from record_income by stating it is a direct write, not a Review-Queue proposal, and explains the effect on the new security transaction and cash row.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('cash has already arrived'), when not to use it (if you want a review proposal, use record_income), and provides a method to find candidates using list_cash_transactions with specific match_status and category filters. It also advises on how to identify the holding (ticker preferred) and mentions the undo process if needed.

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

Install Server

Other Tools

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/steamau/beeswax-desktop'

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