Skip to main content
Glama
oliverames

MCP Server for Wave

by oliverames

Wave: List Accounts

wave_list_accounts
Read-onlyIdempotent

Retrieve chart of accounts with balances. Filter by type or subtype to find the right account for transactions, such as EXPENSE, INCOME, ASSET cash, or LIABILITY credit cards.

Instructions

List the chart of accounts, with balances. Filter by type to find the account a transaction needs: EXPENSE for expense categories, INCOME for revenue, ASSET with subtype CASH_AND_BANK for bank accounts, LIABILITY with subtype CREDIT_CARD for cards.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for offset pagination.
typesNoFilter by type: ASSET, LIABILITY, EQUITY, INCOME, EXPENSE.
subtypesNoFilter by subtype, e.g. ["CASH_AND_BANK", "CREDIT_CARD"].
fetch_allNoWalk every page instead of returning just one. Slower, but complete.
page_sizeNoRecords per page (1-200).
business_idNoBusiness to operate on: the base64 id from wave_list_businesses (a bare business UUID is also accepted). Defaults to the business set by wave_set_default_business. When calls may be minutes apart, pass it on every call.
is_archivedNoFilter to archived (true) or active (false) accounts.
response_formatNoOutput format: "markdown" for a compact human-readable summary, "json" for the complete record.markdown
excluded_subtypesNoSubtypes to omit.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.0.8
    • changedInput schema / properties / business_id / description
      Previous value: -"Business to operate on. Defaults to the session business set by wave_set_default_business."New value: +"Business to operate on: the base64 id from wave_list_businesses (a bare business UUID is also accepted). Defaults to the business set by wave_set_default_business. When calls may be minutes apart, pass it on every call."
  2. First observedv1.0.2

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the bar for additional context is lower. The description adds useful behavioral detail by stating that balances are included and by illustrating how type/subtype filters map to real-world transactional needs, which goes 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.

Conciseness5/5

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

The description is two sentences with no filler. The primary function is front-loaded, and the second sentence provides immediately useful filter recipes. Every clause contributes to either what the tool does or how to apply it.

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

Completeness5/5

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

Given the rich schema (all parameters documented, including pagination, business_id, response_format) and strong annotations (readOnly, idempotent, openWorld), the description is complete enough for an agent to call the tool correctly. It does not need to restate parameters or return shapes because the schema already covers those, and it adds the missing use-case guidance.

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?

Schema coverage is 100%, so baseline is 3ives are 3. The description adds meaning beyond the schema by explaining the practical intent of type and subtype filters (e.g., finding expense categories or bank accounts). This semantic guidance is not present in the parameter descriptions, which only list values.

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 ('List') and a clear resource ('the chart of accounts'), adding that results include balances. It is easily distinguishable from sibling tools like wave_get_account (single account) and wave_list_account_types (types only) because it focuses on accounts themselves.

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

Usage Guidelines4/5

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

The description gives concrete, actionable scenarios: filter by EXPENSE for expense categories, INCOME for revenue, ASSET with subtype CASH_AND_BANK for bank accounts, and LIABILITY with subtype CREDIT_CARD for cards. It implies when to use this tool (when locating an account for a transaction), though it does not explicitly mention alternatives or state when not to use it.

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