Whooing MCP
whooing-mcp
MCP-сервер для личных финансов Whooing (후잉) — управление транзакциями, просмотр расходов, бухгалтерских балансов, бюджетов и многого другого.
Настройка
1. Получение API-учетных данных
Перейдите в Настройки приложения Whooing
Запишите свои
app_id,tokenиsignatureНайдите свой
section_idв API или URL
2. Настройка окружения
export WHOOING_APP_ID=3
export WHOOING_TOKEN=your_token
export WHOOING_SIGNATURE=your_signature
export WHOOING_SECTION_ID=your_section_idИли создайте файл .env (см. .env.example).
Related MCP server: t212-mcp-server
Использование
Режим stdio (Claude Code, Claude Desktop)
npx whooing-mcpРежим HTTP (демон)
npx whooing-mcp --http --port 8182Конфигурация Claude Code (~/.mcp.json)
{
"mcpServers": {
"whooing": {
"command": "npx",
"args": ["whooing-mcp"],
"env": {
"WHOOING_APP_ID": "3",
"WHOOING_TOKEN": "...",
"WHOOING_SIGNATURE": "...",
"WHOOING_SECTION_ID": "..."
}
}
}
}Конфигурация Claude Desktop
{
"mcpServers": {
"whooing": {
"command": "npx",
"args": ["whooing-mcp"],
"env": {
"WHOOING_APP_ID": "3",
"WHOOING_TOKEN": "...",
"WHOOING_SIGNATURE": "...",
"WHOOING_SECTION_ID": "..."
}
}
}
}Инструменты
Инструмент | Описание | Параметры |
| Прибыли и убытки (расходы/доходы по категориям) |
|
| Список транзакций с названиями счетов |
|
| Бухгалтерский баланс (активы, обязательства, капитал) |
|
| Полный список счетов |
|
| Список всех разделов (가계부) | (нет) |
| Обзор ежедневных доходов/расходов по месяцам |
|
| Сохраненные шаблоны частых транзакций |
|
| Недавние уникальные элементы для автозаполнения (60 дней) |
|
| Создание новой записи транзакции |
|
| Обновление существующей записи |
|
| Удаление записи |
|
Даты используются в формате
YYYYMMDD. По умолчанию: текущий месяц (с 1-го числа по сегодняшний день).Месяцы в календаре используются в формате
YYYYMM. По умолчанию: текущий месяц.section_idпо умолчанию берется из переменной окруженияWHOOING_SECTION_ID.Инструменты записи автоматически определяют типы счетов из кэша счетов. Используйте
whooing_accountsдля предварительного поиска ID счетов.
Запуск в качестве демона (macOS launchd)
Создайте ~/Library/LaunchAgents/com.whooing.mcp.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key><string>com.whooing.mcp</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/npx</string>
<string>whooing-mcp</string>
<string>--http</string>
<string>--port</string>
<string>8182</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>WHOOING_APP_ID</key><string>3</string>
<key>WHOOING_TOKEN</key><string>YOUR_TOKEN</string>
<key>WHOOING_SIGNATURE</key><string>YOUR_SIGNATURE</string>
<key>WHOOING_SECTION_ID</key><string>YOUR_SECTION_ID</string>
<key>PATH</key><string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
</dict>
<key>KeepAlive</key><true/>
<key>RunAtLoad</key><true/>
<key>StandardOutPath</key><string>/tmp/whooing-mcp.log</string>
<key>StandardErrorPath</key><string>/tmp/whooing-mcp.err</string>
</dict>
</plist>chmod 600 ~/Library/LaunchAgents/com.whooing.mcp.plist
launchctl load ~/Library/LaunchAgents/com.whooing.mcp.plistРазработка
git clone https://github.com/jmjeong/whooing-mcp.git
cd whooing-mcp
npm install
npm run build
node dist/cli.jsЛицензия
MIT
Available Tools
18 toolswhooing_account_activityARead-only
Summarize activity for one account in a date range, including totals, frequent items, and recent matching entries.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start date (YYYYMMDD). Defaults to 1st of current month. | |
| end_date | No | End date (YYYYMMDD). Defaults to today. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. | |
| account_id | No | Account ID to summarize. Use either account_id or account_name. | |
| account_name | No | Case-insensitive account name match. Used when account_id is omitted. | |
| limit | No | Max number of entries to scan. Defaults to 100. | |
| recent_limit | No | Max number of recent entries to show. Defaults to 20. | |
| page_limit | No | Entries API page size for paginated account lookup. Defaults to 100. | |
| max_pages | No | Maximum pages to fetch for account lookup. Defaults to 10. | |
| max_api_calls | No | Maximum Whooing API calls this tool may make. Defaults to 12. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by detailing the output composition (totals, frequent items, recent entries). It is consistent with the annotation and discloses behavioral traits such as the summary nature. However, it does not explain pagination behavior or API call limits, which are controlled by parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose and key outputs. No extraneous or redundant information. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, no output schema) and the existence of the schema descriptions, the description is mostly complete. It covers the main inputs (account, date range) and outputs. A minor gap is that it does not explain the role of pagination parameters, but the schema covers those. Overall, it provides sufficient context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description does not provide additional semantic meaning for parameters beyond what the schema already offers. It mentions outputs but does not map them to specific parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Summarize activity') and the resource ('one account in a date range') with concrete outputs ('totals, frequent items, recent matching entries'). It distinguishes from sibling tools like whooing_entries (which lists raw entries) and whooing_monthly_summary (which likely aggregates all accounts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it specify when not to use it. No mention of prerequisites, limitations, or competing tools, leaving the agent to infer usage solely from the tool's name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_accountsARead-only
Get the full list of accounts (assets, liabilities, income, expenses, capital)
| Name | Required | Description | Default |
|---|---|---|---|
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds the list of account categories but no additional behavioral context (e.g., pagination, defaults, or side effects). With annotations present, the description provides marginal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear, and informative sentence with no unnecessary words. It front-loads the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list retrieval tool with an optional parameter and annotations indicating safety, the description is mostly complete. It lacks mention of return format or potential pagination, but these are not critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter section_id, which is well-documented in the schema. The description does not mention the parameter, so it adds no additional meaning beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the full list of accounts and enumerates the account types (assets, liabilities, income, expenses, capital). This distinguishes it from sibling tools like whooing_account_activity or whooing_balance that handle specific subsets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching all accounts but does not explicitly provide guidance on when to use this tool versus alternatives such as whooing_account_activity. No when-not-to-use or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_add_entryA
Create a new transaction entry in Whooing (e.g. expense, income). Use whooing_accounts first to look up account IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_date | Yes | Transaction date in YYYYMMDD format (e.g. 20260423) | |
| l_account_id | Yes | Left account ID (e.g. expense category like x11 for 식비) | |
| r_account_id | Yes | Right account ID (e.g. payment method like x24 for 삼성카드) | |
| item | Yes | Item description (store name or item) | |
| money | Yes | Amount in KRW (negative for balance adjustments, 0 allowed) | |
| memo | No | Optional memo | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set readOnlyHint=false, so the description's 'Create' aligns. Minimal extra behavioral context beyond that; no details on error handling, idempotency, or return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. The first sentence states purpose, the second provides actionable guidance. Extremely efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the parameter count and schema coverage, the description adequately explains the tool's role and prerequisite. Lacks mention of return format, but no output schema exists. Overall sufficient for a straightforward creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for each parameter. The description adds no additional parameter semantics beyond explaining the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new transaction entry, gives examples (expense, income), and distinguishes it from siblings like whooing_entries (list) and whooing_bulk_add_entries (bulk).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends using whooing_accounts first to look up account IDs, providing a clear prerequisite. It doesn't explicitly state when not to use, but the sibling whooing_bulk_add_entries implies the alternative for multiple entries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_balanceARead-only
Get balance sheet (assets, liabilities, capital) as of a date range
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start date (YYYYMMDD). Defaults to 1st of current month. | |
| end_date | No | End date (YYYYMMDD). Defaults to today. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true. The description adds minimal behavioral context beyond confirming it is a read operation. No additional behaviors like pagination or aggregation are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 9 words, front-loaded with action, and contains no unnecessary information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (no required params, no output schema), the description is mostly adequate. It explains the core function but could optionally mention that section_id is optional and defaults to an environment variable, which is already in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mentions 'as of a date range', which aligns with start_date and end_date, but does not add new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'balance sheet', and specifies it includes assets, liabilities, and capital. This distinguishes it from siblings like whooing_pl (profit/loss) and whooing_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for balance sheet queries but does not explicitly provide when-to-use or when-not-to-use guidance compared to alternatives. The context is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_budgetBRead-only
Get budget status (expenses) for a date range. Dates use YYYYMM (month) format.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start month (YYYYMM). Defaults to current month. | |
| end_date | No | End month (YYYYMM). Defaults to current month. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows it is a safe read operation. The description adds no further behavioral context beyond 'Get', which is redundant. Without additional disclosures (e.g., pagination, limits), it meets baseline but adds no extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence states the purpose, the second provides critical date format. Information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not explain what the response contains (e.g., categories, totals, comparison). Given the number of sibling budget tools, more detail on return value or data structure is needed to help the agent choose correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage with detailed schema documentation for each parameter. The description only reinforces the date format already present in the schema. Since the schema fully describes parameters, the description provides no additional meaning, earning the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'budget status', and the scope 'for a date range'. It also specifies the date format YYYYMM, which is critical. Among siblings, it differentiates from other budget-related tools like whooing_balance or whooing_monthly_summary by focusing on expenses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives. There is no indication of prerequisites, typical use cases, or exclusions. The agent must infer usage from the name and brief description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_bulk_add_entriesA
Create multiple transaction entries in Whooing. Use whooing_accounts first to look up account IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| entries | Yes | Entries to create, in order. Maximum 50. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this tool performs mutations (readOnlyHint=false). The description adds the prerequisite about account lookups but does not disclose other behavioral traits such as partial failure handling or confirmation of creation. The schema provides maxItems, but the description does not elaborate on limits or side effects beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no extraneous information, front-loaded with the core action and a key prerequisite. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and prerequisite but lacks return value information (no output schema). Given tool complexity (array input, max 50), the description could explain what the response contains (e.g., list of created entries or IDs). Sibling tools are not compared, but name aids differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all parameters with descriptions (100% coverage). The description only implicitly references account IDs but adds no new semantic meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'create multiple transaction entries' and identifies the resource 'Whooing'. It clearly distinguishes from the sibling 'whooing_add_entry' which handles single entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to 'use whooing_accounts first to look up account IDs', providing a clear prerequisite. However, it does not explicitly state when to prefer this bulk tool over the single-entry alternative, though the name implies the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_calendarARead-only
Get daily income/expense overview for a month. Shows per-day transaction counts, income, and expenses.
| Name | Required | Description | Default |
|---|---|---|---|
| start_month | No | Start month in YYYYMM format (e.g., 202604). Defaults to current month. | |
| end_month | No | End month in YYYYMM format (e.g., 202604). Defaults to current month. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by specifying the output includes per-day transaction counts, income, and expenses. No contradictions with annotations. However, it does not disclose potential limitations like date range size or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two sentences that efficiently convey purpose and output. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains the return structure (per-day data for a month). It omits details like whether days with no transactions are included, but for a read tool with annotations, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add additional meaning beyond what the parameter descriptions already provide (e.g., date format, defaults).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and clearly defines the resource as 'daily income/expense overview for a month', including per-day transaction counts, income, and expenses. This clearly distinguishes it from siblings like whooing_monthly_summary or whooing_entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. For a tool with many similar siblings, this is a significant omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_delete_entryA
Delete a transaction entry from Whooing. Use whooing_entries to find the entry_id first.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | Entry ID to delete (from whooing_entries) | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Delete', which is a mutating operation, consistent with readOnlyHint: false. It does not detail side effects or irreversibility, but for a deletion tool, the behavior is fairly transparent. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous information. Every word is necessary and front-loaded with the core action and prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema, no nested objects), the description is adequate. It covers the action and prerequisite. Could optionally mention response format, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for both parameters. The description adds no new parameter information beyond what schema provides; it only reiterates the prerequisite. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a transaction entry, with the verb 'Delete' and resource 'transaction entry from Whooing'. It also mentions prerequisite (find entry_id via whooing_entries), distinguishing it from siblings like whooing_add_entry or whooing_update_entry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use whooing_entries to find the entry_id first, providing clear context for when to use this tool. It does not explicitly mention alternatives or when not to use, but the prerequisite guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_duplicate_candidatesARead-only
Find likely duplicate transactions in a date range by grouping same date, amount, accounts, and item.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start date (YYYYMMDD). Defaults to 1st of current month. | |
| end_date | No | End date (YYYYMMDD). Defaults to today. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. | |
| limit | No | Max number of entries to fetch. | |
| account_ids | No | Return entries where either side account ID is in this list. | |
| account_name | No | Case-insensitive account name match, e.g. Game or 네이버페이. | |
| l_account_id | No | Return entries with this left account ID (e.g. expense category). | |
| r_account_id | No | Return entries with this right account ID (e.g. payment account). | |
| min_money | No | Return entries with amount greater than or equal to this value. | |
| max_money | No | Return entries with amount less than or equal to this value. | |
| item_contains | No | Case-insensitive substring match against the item field. | |
| memo_contains | No | Case-insensitive substring match against the memo field. | |
| item | No | Raw Whooing item search. Supports exact match, * wildcard, and detail parentheses. | |
| memo | No | Raw Whooing memo search. Supports space-separated AND terms and ! exclusions. | |
| query | No | Case-insensitive substring match against item or memo. | |
| keywords | No | Any keyword to match case-insensitively against item or memo. | |
| page_limit | No | Entries API page size for paginated search. Defaults to 100. | |
| max_pages | No | Maximum pages to fetch when paginating with the entries max cursor. | |
| max_api_calls | No | Maximum Whooing API calls this tool may make. Defaults to 20. | |
| sort_column | No | Whooing entries sort column. Defaults to entry_date. | |
| sort_order | No | Whooing entries sort order. Defaults to desc. | |
| include_memo | No | Include memo in duplicate grouping. Defaults to false. | |
| min_group_size | No | Minimum matching entries per duplicate group. Defaults to 2. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description correctly aligns with a read operation. However, the description does not disclose additional behavioral traits like potential high API call usage (max_api_calls parameter) or the grouping algorithm's limitations. It adds minimal context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 17-word sentence that is front-loaded with the core purpose. It is efficient but could be slightly more informative without becoming verbose. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 23 parameters, no output schema, and many sibling tools, the description is overly minimal. It does not explain what the output looks like (e.g., groups of entries), how grouping criteria interact, or that it may make multiple API calls. Incomplete for such a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 23 parameters are described in the schema. The tool description mentions grouping by 'date, amount, accounts, and item,' which maps to parameters but does not add new meaning beyond the schema. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find' and resource 'likely duplicate transactions' with a specific method 'by grouping same date, amount, accounts, and item.' This distinguishes it from sibling tools like whooing_entries (list all) or whooing_search_entries (general search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies using it to find duplicates but does not explicitly state when to prefer it over searching manually or using other tools. No exclusions or alternatives are mentioned. Usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_entriesBRead-only
Get transaction entries (individual transactions with account names) for a date range
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start date (YYYYMMDD). Defaults to 1st of current month. | |
| end_date | No | End date (YYYYMMDD). Defaults to today. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. | |
| limit | No | Max number of entries to fetch. | |
| account_ids | No | Return entries where either side account ID is in this list. | |
| account_name | No | Case-insensitive account name match, e.g. Game or 네이버페이. | |
| l_account_id | No | Return entries with this left account ID (e.g. expense category). | |
| r_account_id | No | Return entries with this right account ID (e.g. payment account). | |
| min_money | No | Return entries with amount greater than or equal to this value. | |
| max_money | No | Return entries with amount less than or equal to this value. | |
| item_contains | No | Case-insensitive substring match against the item field. | |
| memo_contains | No | Case-insensitive substring match against the memo field. | |
| item | No | Raw Whooing item search. Supports exact match, * wildcard, and detail parentheses. | |
| memo | No | Raw Whooing memo search. Supports space-separated AND terms and ! exclusions. | |
| query | No | Case-insensitive substring match against item or memo. | |
| keywords | No | Any keyword to match case-insensitively against item or memo. | |
| page_limit | No | Entries API page size for paginated search. Defaults to 100. | |
| max_pages | No | Maximum pages to fetch when paginating with the entries max cursor. | |
| max_api_calls | No | Maximum Whooing API calls this tool may make. Defaults to 20. | |
| sort_column | No | Whooing entries sort column. Defaults to entry_date. | |
| sort_order | No | Whooing entries sort order. Defaults to desc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description does not need to emphasize safety. It adds the detail 'with account names', which is helpful. No behavioral nuances are disclosed beyond what annotations and schema imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the key action. It is concise without unnecessary words. Could be slightly more detailed but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 21 parameters and no output schema, the description is too minimal. It does not summarize filtering capabilities or pagination behavior. The schema provides details, but the description should give a high-level overview of the tool's functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning to the parameters; it only states the general purpose. The schema already documents all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'transaction entries' with detail 'individual transactions with account names', and scope 'for a date range'. This distinguishes it from siblings like 'whooing_entry_detail' which fetches a single entry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'whooing_search_entries' or 'whooing_entry_detail'. It implies listing entries by date range but does not exclude other use cases or mention context for sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_entry_detailARead-only
Get one transaction entry by entry_id. Use this before updating or deleting when you already know the ID.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | Entry ID to fetch. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and description is consistent. No new behavioral details beyond 'get' and single entry retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences: first states purpose, second provides usage context. No redundancy or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch tool with clear annotations and no output schema, the description adequately covers purpose, usage, and constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with descriptions (100% coverage). Description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches one transaction entry by entry_id, using specific verb and resource. It also differentiates from siblings by mentioning use before update/delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use before updating or deleting when ID is known, providing clear context. No explicit alternatives stated, but sufficient guidance for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_frequent_itemsBRead-only
List frequently used transactions (templates for quick entry). Returns saved transaction templates organized by slots.
| Name | Required | Description | Default |
|---|---|---|---|
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds that results are 'organized by slots', providing some behavioral context beyond annotations, but does not disclose additional traits like pagination or default behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences with no filler. Effectively front-loaded with key purpose and return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should explain return structure beyond 'organized by slots'. It is vague and insufficient for an agent to fully understand what data is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the only parameter. The tool description does not add extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists frequently used transactions/templates for quick entry, using a specific verb ('List') and resource. It distinguishes from sibling tools like whooing_entries by specifying 'templates for quick entry'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like whooing_entries or whooing_latest_items. Missing context about when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_latest_itemsARead-only
Get recent unique transaction items from the past 60 days. Useful for autocomplete suggestions when adding new entries.
| Name | Required | Description | Default |
|---|---|---|---|
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds that items are 'unique' and from 'past 60 days', but no further behavioral details (e.g., ordering, pagination). Fails to add significant value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then use case. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter, the description adequately covers purpose and context. However, could mention output format or ordering for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so description does not need to add parameter details. It adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Get', resource 'recent unique transaction items', and time range 'past 60 days'. Distinguishes from sibling 'whooing_frequent_items' by emphasizing uniqueness and recency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions use case 'autocomplete suggestions when adding new entries', providing clear context for when to use. However, does not contrast with alternatives like 'whooing_entries' or 'whooing_frequent_items'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_monthly_summaryARead-only
Get month-by-month income, expense, net amount, and transaction count for a month range.
| Name | Required | Description | Default |
|---|---|---|---|
| start_month | No | Start month in YYYYMM format. Defaults to current month. | |
| end_month | No | End month in YYYYMM format. Defaults to current month. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds that the tool returns aggregated data for a month range, which is consistent. However, it doesn't disclose details like response format, ordering, or handling of missing months. With annotations covering safety, description provides minimal additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 12 words, front-loaded with the key purpose. No fluff; every word contributes value. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description must explain return data. It lists fields (income, expense, net amount, transaction count) but doesn't specify structure (array of objects per month) or default behavior for missing data. Adequate for a simple read tool but could be more explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so schema already defines parameters. Description mentions 'month range' which aligns with start_month/end_month but adds no new meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves month-by-month income, expense, net amount, and transaction count for a month range. This specific verb+resource combination distinguishes it from sibling tools like whooing_balance or whooing_pl which provide different summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining monthly summaries over a range, but lacks explicit guidance on when to use this tool versus alternatives (e.g., whooing_entries for raw transactions, whooing_balance for a single period). No when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_plARead-only
Get profit & loss summary (spending and income by category) for a date range
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start date (YYYYMMDD). Defaults to 1st of current month. | |
| end_date | No | End date (YYYYMMDD). Defaults to today. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds that the summary is by category, but does not disclose other behavioral aspects like pagination or response format. For a read-only tool, the description adds marginal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality without any extraneous words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only summary tool with well-described parameters, the description covers the basic purpose. However, without an output schema, it lacks details on the structure of the summary (e.g., totals, list of categories), which could leave the agent uncertain about the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description including defaults. The tool description itself adds no additional semantic information beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a profit & loss summary, specifying spending and income by category for a date range. This distinctly differentiates it from siblings like whooing_balance or whooing_entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for period summaries but provides no explicit guidance on when to use this tool over alternatives like whooing_budget or whooing_monthly_summary. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_search_entriesARead-only
Search transactions with query, account, amount, and date filters. Prefer this for natural-language find/search requests.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | Start date (YYYYMMDD). Defaults to 1st of current month. | |
| end_date | No | End date (YYYYMMDD). Defaults to today. | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. | |
| limit | No | Max number of entries to fetch. | |
| account_ids | No | Return entries where either side account ID is in this list. | |
| account_name | No | Case-insensitive account name match, e.g. Game or 네이버페이. | |
| l_account_id | No | Return entries with this left account ID (e.g. expense category). | |
| r_account_id | No | Return entries with this right account ID (e.g. payment account). | |
| min_money | No | Return entries with amount greater than or equal to this value. | |
| max_money | No | Return entries with amount less than or equal to this value. | |
| item_contains | No | Case-insensitive substring match against the item field. | |
| memo_contains | No | Case-insensitive substring match against the memo field. | |
| item | No | Raw Whooing item search. Supports exact match, * wildcard, and detail parentheses. | |
| memo | No | Raw Whooing memo search. Supports space-separated AND terms and ! exclusions. | |
| query | No | Case-insensitive substring match against item or memo. | |
| keywords | No | Any keyword to match case-insensitively against item or memo. | |
| page_limit | No | Entries API page size for paginated search. Defaults to 100. | |
| max_pages | No | Maximum pages to fetch when paginating with the entries max cursor. | |
| max_api_calls | No | Maximum Whooing API calls this tool may make. Defaults to 20. | |
| sort_column | No | Whooing entries sort column. Defaults to entry_date. | |
| sort_order | No | Whooing entries sort order. Defaults to desc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, indicating a safe read operation. The description adds no contradictory behavior and mentions the search filters, but does not elaborate on pagination, rate limits, or other behavioral specifics. The annotations carry the burden effectively, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. First sentence covers purpose and key filters; second adds usage guidance. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 21 parameters and no output schema, the description is minimal. It does not explain return format, pagination behavior (despite pagination parameters), or default behavior when filters are absent. More detail would be needed for a search tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add meaning beyond listing the filter categories ('query, account, amount, and date'), but the schema already documents each parameter thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Search'), the resource ('transactions'), and the filters ('query, account, amount, and date'). It also differentiates from siblings by recommending it for 'natural-language find/search requests', making its purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use the tool ('Prefer this for natural-language find/search requests'). It does not mention when not to use it or list alternatives, but the guidance is clear and contextually useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_sectionsARead-only
List all sections (가계부) in the Whooing account
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description does not need to add more. It adds context that sections refer to 가계부, which is helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, and directly conveys the tool's action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with no parameters and read-only annotation, the description is fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description does not need to explain them. Baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all sections (가계부) in the Whooing account, with a specific verb and resource, distinguishing it from sibling tools that deal with entries, accounts, or budgets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, but the purpose is clear enough that an agent can infer its usage for listing sections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whooing_update_entryA
Update an existing transaction entry in Whooing. Use whooing_entries to find the entry_id, and whooing_accounts to look up account IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | Entry ID to update (from whooing_entries) | |
| entry_date | Yes | Transaction date in YYYYMMDD format (e.g. 20260423) | |
| l_account_id | Yes | Left account ID (e.g. expense category) | |
| r_account_id | Yes | Right account ID (e.g. payment method) | |
| item | Yes | Item description (store name or item) | |
| money | Yes | Amount in KRW (negative for balance adjustments, 0 allowed) | |
| memo | No | Optional memo | |
| section_id | No | Section ID. Defaults to WHOOING_SECTION_ID env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only set readOnlyHint=false, so description carries burden. The description notes it is an update but does not disclose side effects, error states, or response format beyond basic mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loaded with purpose, no wasted words. Essential information about companion tool usage is included efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters fully documented in schema and no output schema, description covers the key selection workflow but omits what response or error behavior to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and descriptions are adequate. The tool description adds no additional meaning beyond referencing companion tools, which is already implicit in parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Update' and resource 'existing transaction entry in Whooing'. Distinguishes from siblings like whooing_add_entry and whooing_delete_entry by referencing companion tools for finding IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to use whooing_entries to find entry_id and whooing_accounts for account IDs, framing the prerequisite steps. Does not list explicit exclusions but usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
18 tool updates
v0.3.11- First observed
whooing_account_activity - First observed
whooing_accounts - First observed
whooing_add_entry - First observed
whooing_balance - First observed
whooing_budget - First observed
whooing_bulk_add_entries - First observed
whooing_calendar - First observed
whooing_delete_entry - First observed
whooing_duplicate_candidates - First observed
whooing_entries - First observed
whooing_entry_detail - First observed
whooing_frequent_items - First observed
whooing_latest_items - First observed
whooing_monthly_summary - First observed
whooing_pl - First observed
whooing_search_entries - First observed
whooing_sections - First observed
whooing_update_entry
TDQS
Scored across 18 tools
Each tool has a clear and distinct purpose, such as adding an entry vs. searching entries vs. getting accounts. There is minimal overlap, and descriptions help differentiate similar tools like 'entries' and 'search_entries'.
Most tools follow a consistent 'whooing_verb_noun' pattern (e.g., whooing_add_entry, whooing_delete_entry). However, a few tools like 'whooing_accounts' and 'whooing_budget' omit the verb, which is a minor inconsistency but still understandable.
With 18 tools, the server covers a comprehensive set of operations for personal finance management without being overwhelming. Each tool serves a necessary function, and the count is well-scoped for the domain.
The tool surface provides full lifecycle coverage: listing accounts, creating/reading/updating/deleting entries, balance sheets, profit/loss, budgets, calendar views, duplicate detection, and search. No obvious gaps exist for typical personal finance tracking.
Maintenance
Related MCP Connectors
Read-only access to Genie accounts, transactions, investments, and financial summaries.
Chat with your bank data: balances, transactions, budgets, bills. Reads only, never moves money.
Read your accounts, budgets and net worth, and draft changes you confirm.
Read-only access to your bank, investment, and crypto accounts: balances, transactions, holdings.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides read-only access to Monarch Money financial data, enabling AI assistants to analyze transactions, budgets, and cashflow.4MIT
- AlicenseNot gradedqualityDmaintenanceProvides read-only access to Trading 212 accounts, enabling AI assistants to retrieve portfolio positions, account summaries, instrument data, and transaction history.10 npm5MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to query personal multi-account investment ledger data from Tonghuashun, including positions, asset trends, trade records, real-time quotes, and watchlists via natural language.1Apache 2.0
- AlicenseNot gradedqualityAmaintenanceProvides read-only access to Kledo accounting data, enabling listing and searching of invoices, contacts, products, and running financial reports through natural language.20 npmApache 2.0