PocketQuota
PocketQuota is an MCP budget-ledger server for viewing and managing daily quotas, pools, transactions, notifications, and schedules.
Read today's quota, pool balances, overspend and insolvency status.
List dated journal entries, including reversals and automatic allocations, with start/end/offset filters.
Record user-authorized expenses, income, and transfers idempotently; daily overspend is covered by flex.
Reverse incorrect manual transactions while preserving audit history.
Record explicitly supplied real balances via reconciliation without automatically adjusting the ledger.
List and acknowledge budget-exhausted notifications after successful owner delivery.
Configure daily allowance, carry-over, settlement/review times, and effective dates with manage scope.
Adjust pool balances with an audit reason.
Create, edit, pause, and list daily or monthly credit schedules.
Explicitly settle a day early; automatic settlement also runs on the server.
Supports read-only, bookkeeping, and budget-management permission scopes.
Connects Hermes agents via standard MCP stdio to PocketQuota, allowing them to record transactions, query budgets, manage quota settings, and stay synchronized with the same web account ledger.
Provides an OpenAI-compatible function-calling adapter and REST/OpenAPI interface so OpenAI-compatible agents can interact with PocketQuota to record spending, check remaining limits, and manage budget rules.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PocketQuota午饭花了 18.5,记日常池。"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
v0.3.1 · 双环与双光轨同时显示今日额度和日常池总余额,配合蓄水池、保险柜与共享账本。更新详情
今天,还能自由花多少?
PocketQuota 把这个问题变成一条看得见的额度。
给日常消费设定限额,把节省下来的钱存进灵活池;需要多一点空间时,自动从灵活池补足。你可以随手在网页记一笔,也可以直接告诉自己的 Agent——两边始终共用同一本账。
日常有边界,灵活有余地。
Related MCP server: cycles-mcp-server
一个额度面板,掌握消费节奏
看见额度 | 让规则运转 | 和 Agent 协作 |
今日剩余、资金池余额、消费趋势一眼可见 | 每日结余自动划转,补贴与生活费按时入账 | 对话记账、查询预算、核对账目、接收额度提醒 |
黑白主题,线形光轨与圆环自由切换 | 补记、撤销、余额调整都有完整记录 | 网页账号与 Agent 共享同一份预算和通知 |
额度随消费变化:扣款时粒子轻轻消散,入账时光带汇入。三套光谱配色,搭配清爽的黑白界面,把每天看预算变成一件舒服的事。
把钱分好,把选择留给自己
资金池 | 为你做什么 |
日常池 | 每天的默认消费来源,用每日限额把握节奏 |
灵活池 | 接住每日结余,承接超额消费,也可直接指定使用 |
保底池 | 单独留存的一份安心,由你明确安排用途 |
例如:每天额度 ¥60,今天已经花了 ¥50,再记一笔 ¥25。PocketQuota 会自动分配 日常 ¥10 + 灵活 ¥15,清楚展示每一分钱的去向。
月底回顾、每日核对、临时调整,都可以在同一个地方完成。CSV 导出支持日期筛选、中文列名和各资金池实际扣款额,方便继续用 Excel 整理。
当可消费预算耗尽,界面会切换为醒目的红色 “赤字 · 已破产” 状态,并生成供通知 Agent 领取的额度事件。提醒流程见 Agent 通知指南。
一句话记账,剩下交给规则
“午饭花了 18.5,记日常池。”
“这次旅行的车费 35,走灵活池。”
“今天还剩多少额度?”
“把每日限额改成 60,明天开始。”
“每月 1 号上午 9 点,给日常池记入 1800 生活费。”给你的 Agent 一枚本账号的专用令牌,就能让对话与网页保持同步。按需要选择 只读、记账、预算管理 三档权限。
你正在使用的工具 | 接入方式 |
Codex | |
Claude Code / Desktop、Cursor | |
VS Code Copilot、Gemini CLI | |
Hermes 与其他 MCP Agent | |
DeepSeek / OpenAI-compatible 与自建 Agent |
13 个 MCP 工具,一套统一账本接口。 配置步骤、工具权限与客户端验证情况集中在 Agent 接入文档。
开始体验
准备 Python 3.11+,运行三行命令:
git clone https://github.com/ReHowever/pocketquota.git
cd pocketquota
python3 -m pocketquota.server --demo --data .demo-data打开 本机演示,点击 “试用演示账本”,即可探索完整界面与虚构示例。
准备开始自己的预算时,使用 正式部署指南。支持直接运行、Python 安装包与 Docker。
自己掌握数据,也掌握规则
独立账号:每个用户拥有自己的账本,Agent 绑定同一账号。
随机初始密码:默认管理员与新建用户均使用随机强密码。
可追溯账本:金额精确到分,自动结算、补记和撤销都有记录。
按你的节奏:日限、生效日、结算时间、月对账日期和定期入账都可配置。
开源可扩展:MIT 许可,标准接口,适合个人使用和继续构建自己的工具。
继续探索
使用指南 · 部署与备份 · Agent 接入 · API · 设计说明 · 安全说明 · 发布验收
欢迎分享使用体验、提出功能建议,或通过 Issue 与 Pull Request 一起完善 PocketQuota。
Available Tools
13 toolsbudget_ack_notificationAIdempotent
Acknowledge an event only AFTER successful owner notification. Failed delivery must remain pending. Use one designated notification agent per ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the critical ordering constraint and failure behavior: acknowledgement must happen after successful notification, and failed delivery must remain pending. It also constrains which agent may perform the operation. It does not explain the acknowledgement's return behavior or downstream effects, but the annotations already establish that it is a mutating, idempotent, non-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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no filler, and the most important constraint (acknowledge only after successful notification) is front-loaded. Every sentence contributes a distinct operational rule.
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?
The workflow and failure constraints are well covered for a mutation tool, and annotations carry the idempotency and safety profile. However, the description leaves both required string parameters semantically undefined and does not clarify the relationship to the notification or ledger tools. That is a meaningful gap for a tool with no output schema and zero schema parameter descriptions.
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 0%, and the description never explains what 'id' or 'request_id' represent. The only semantic hints are contextual terms like 'event', 'owner notification', and 'ledger', which do not map clearly to either parameter. The description therefore does not compensate for the undocumented 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 states a specific action (acknowledge an event) with a precondition (after successful owner notification), which is clearer than a tautology. It does not explicitly distinguish this tool from notification-related siblings such as budget_notifications, leaving some ambiguity about which event is being acknowledged.
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?
It gives clear when-to-use guidance: acknowledge only after successful owner notification, and leave failed deliveries pending. It also adds a concurrency/ownership rule (one designated notification agent per ledger). It does not name alternative tools for notification or retry handling, so it falls short of explicit alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_adjust_poolAIdempotent
Requires manage scope and explicit user request. Set a pool's actual budget balance with an audit reason; this creates an adjustment entry, not a bank transfer.
| Name | Required | Description | Default |
|---|---|---|---|
| pool | Yes | ||
| reason | Yes | ||
| balance | Yes | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, so the bar is lower; the description still adds genuine context by stating the authorization scope, the requirement of an explicit user request, and that the effect is an audit adjustment entry rather than an actual transfer of funds. It does not mention what happens to prior balance history or whether the set is absolute, but the core behavior is 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?
Two compact sentences with the permission prerequisite front-loaded and the key semantic distinction (adjustment vs. transfer) immediately after. No filler, though the second clause is dense and slightly overloaded.
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 mutating tool with annotations and no output schema, the description covers the safety/authorization picture and the nature of the resulting entry. It falls short on parameter-level essentials — balance format and the purpose of request_id — which an agent needs to invoke this 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?
Schema description coverage is 0% and all four parameters are required, so the description must compensate. It only glosses 'pool' and 'reason' indirectly ('with an audit reason'); 'balance' format (string currency?), and especially 'request_id' (presumably an idempotency key, consistent with idempotentHint) are unexplained.
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?
States a specific verb and resource: setting a pool's actual budget balance, plus a clarifying negation that it creates an adjustment entry rather than a bank transfer. This distinguishes it reasonably well from siblings like budget_record and budget_settle, though it never names them directly.
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?
Gives clear preconditions ('Requires manage scope and explicit user request') and an implicit exclusion ('not a bank transfer'), which points the agent toward the transfer/record tool for movement of funds. It stops short of naming the alternative tool explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_configureAIdempotent
Requires manage scope and explicit user request. Change daily allowance or settlement/review times. Fetch budget_status first for settings.revision; effective date cannot be in the past.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| revision | Yes | ||
| effective | No | ||
| carry_over | No | ||
| request_id | Yes | ||
| review_day | No | ||
| daily_limit | No | Decimal currency string, e.g. 12.50. Never float. | |
| review_time | No | ||
| settle_time | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing the authorization scope (manage), the required user-confirmation gate, the optimistic-concurrency pattern (revision from budget_status), and a validation rule ('effective date cannot be in the past'). Annotations already cover idempotency and non-destructiveness, so this extra context is a genuine contribution rather than repetition.
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?
Three tight sentences with no filler, each carrying distinct actionable information. Minor flaw: it leads with permission requirements before stating what the tool actually does, so the purpose is buried behind prerequisites.
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 9-parameter mutation with no output schema, the description covers the dangerous parts (auth, concurrency, date validation) but leaves half the parameters and the result behavior unaddressed. Adequate to call safely, not complete enough to call confidently without opening 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?
With only 11% schema coverage across 9 params, the description must compensate: it explains revision's source, the effective-date constraint, and maps daily_limit/review_time/settle_time to concrete concepts. But name, carry_over, and especially request_id (the idempotency key) are never explained, leaving key inputs ambiguous.
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?
States a concrete verb and two specific resource facets ('Change daily allowance or settlement/review times'), which clearly separates it from read-only siblings like budget_status. However it omits other mutable fields (name, carry_over) and never explicitly names an alternative tool it must not be confused with.
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?
Gives real preconditions: 'Requires manage scope and explicit user request' and 'Fetch budget_status first for settings.revision'. That tells the agent both the auth bar and the required call ordering. It stops short of stating when NOT to use it (e.g., versus budget_schedule or budget_adjust_pool).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_notificationsARead-only
List unacknowledged budget-exhausted notifications. Only notify the ledger owner through an authorized channel. Empty list means remain silent. Use event ID to deduplicate delivery.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, yet the description adds genuinely new context: the result set is filtered to unacknowledged items, it may legitimately be empty, delivery should be restricted to the ledger owner via an authorized channel, and event IDs enable deduplication. These are delivery-side constraints an agent could not infer from the schema or 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?
Four short sentences, front-loaded with the core purpose and with no redundant restatement of the tool name. The telegraphic, instruction-style phrasing is slightly clipped but every sentence carries 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?
With no parameters, no output schema and a read-only annotation, the description supplies what is otherwise missing: the filtering semantics of the result set, the possibility of an empty result, and the delivery/dedup contract. It does not describe result shape (count, fields), but the absence of an output schema makes that a minor gap for a simple list 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The mention of 'event ID' refers to fields in the returned notifications, not inputs, and does not create confusion about the empty 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?
States a specific verb (List) and a narrowly scoped resource (unacknowledged budget-exhausted notifications), which an agent can distinguish from budget_ack_notification's write behaviour. It stops short of naming a sibling explicitly, so it earns a 4 rather than a 5.
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 when the results matter ('Empty list means remain silent', 'Use event ID to deduplicate delivery') but never states when to call this versus budget_status or budget_summary, nor any precondition for the call. Useful handling guidance, no real routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_reconcileBIdempotent
Record a user's explicitly supplied real balances. Never fabricate actual balances from expected values. Does not automatically adjust the ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| actual | Yes | ||
| period | Yes | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-destructive, idempotent write; the description adds the important boundary that it records balances without touching the ledger, plus a data-integrity constraint against deriving actuals from expected values. It does not explain the request_id idempotency mechanism or what happens on a duplicate submission, which would complete the picture.
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?
Three short sentences, front-loaded with the core action, and each sentence adds a distinct piece of information (purpose, input constraint, side-effect boundary). No filler 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?
With no output schema and zero schema description coverage on a nested four-parameter mutation, the description should carry more weight than three sentences. It omits parameter semantics, the return behavior, and how idempotent replay resolves, leaving an agent able to guess intent but not call it correctly with confidence.
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 0% across four parameters, including a nested 'actual' object with daily/flex/reserve strings, a period, and a request_id. The description says nothing about format, currency units, period syntax, or that request_id is the idempotency key, so it fails to compensate for the empty schema documentation.
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?
Clear verb+resource: records a user's explicitly supplied real balances, which distinguishes it from the transaction-recording or pool-adjustment siblings. It does not name any sibling explicitly, but the scope ('real balances' vs expected values, no automatic ledger adjustment) is specific enough to identify the operation.
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 prohibition on fabricating actuals gives a clear usage rule for what values to pass, and 'Does not automatically adjust the ledger' implies a follow-up step exists elsewhere. It never names that follow-up tool (e.g., budget_adjust_pool) or states when to prefer this over budget_record/budget_settle, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_recordBIdempotent
Record user-authorized expense, income or transfer. Default pool daily. Excess daily quota or exhausted daily pool is immediately covered by flex. Reuse request_id when retrying this same user request.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| kind | No | ||
| note | No | ||
| pool | No | ||
| amount | Yes | Decimal currency string, e.g. 12.50. Never float. | |
| to_pool | No | ||
| category | No | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavior beyond that: default pool is daily, excess daily quota or an exhausted daily pool is immediately covered by flex, and request_id should be reused on retries. It does not detail error handling or permission requirements beyond 'user-authorized'.
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?
Four short sentences, front-loaded with the purpose. Each sentence carries operational meaning: default pool, overflow behavior, and idempotent retry handling. There is no filler or redundancy.
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 an 8-parameter mutating tool with no output schema, the definition omits key invocation details: whether to_pool is required for transfers, whether kind or date have defaults, and how optional fields like note and category are treated. The pool and request_id behavior are covered, but the gaps are significant for confident use across all transaction kinds.
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 only 13%, so the description must compensate but explains only pool defaulting, overflow to flex, request_id reuse, and the kind values (expense, income, transfer). It leaves to_pool—critical for transfers—as well as date, note, and category unexplained, and does not state whether kind defaults when omitted.
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 states a specific verb and resource: 'Record user-authorized expense, income or transfer.' This clearly separates recording from read-oriented siblings such as budget_transactions and budget_summary, but it does not explicitly name or contrast with any sibling.
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?
It gives useful retry guidance ('Reuse request_id when retrying this same user request') and explains default pool behavior, which implies usage for recording authorized transactions. However, it never states when to use this instead of budget_reverse, budget_settle, or budget_adjust_pool, and provides no when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_reverseBIdempotent
Reverse an incorrect manual transaction, preserving audit. Only on user authorization; do not silently delete or hide history.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| reason | Yes | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description reinforces the non-destructive nature by saying it preserves audit and does not hide history, which gives useful semantic context about a reversal rather than a delete. It does not explain the idempotency contract, the authorization mechanism, or what happens to the original transaction besides being preserved.
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 compact sentences with the operation stated first and the safety constraint immediately after. No filler, no 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?
It is a mutating tool with no output schema and three fully undocumented required parameters, so the description carries the whole burden and does not meet it. Missing are the meaning of id versus request_id, the idempotency behavior, and what a successful reversal returns.
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 0% and all three parameters (id, reason, request_id) are required but undocumented in the schema. The description never mentions any parameter, so an agent must infer that 'id' is the transaction to reverse and that request_id is an idempotency key. That is a substantive gap given three required params.
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 pairs a specific action ('reverse') with a specific resource ('an incorrect manual transaction'), so the intent is unambiguous. It does not explicitly distinguish itself from siblings like budget_adjust_pool or budget_record, but the 'reverse a manual transaction' framing is distinctive enough to differentiate in practice.
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?
It gives one hard precondition ('Only on user authorization') and one prohibition ('do not silently delete or hide history'), which implies the reversal workflow. However, it never names an alternative sibling for other correction scenarios, nor does it state when the tool should not be used versus other budget tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_scheduleAIdempotent
Requires manage scope and explicit user request. Create/edit/pause a daily or monthly credit schedule. Only accounting, not a payment. Existing schedule IDs come from budget_schedules.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| day | No | ||
| name | No | ||
| pool | No | ||
| time | No | ||
| amount | Yes | Decimal currency string, e.g. 12.50. Never float. | |
| enabled | No | ||
| frequency | No | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds non-obvious behavioral context beyond that: an authorization requirement (manage scope), a consent requirement (explicit user request), and a semantic boundary that this is accounting only, not an actual payment. It does not explain side effects of pausing or editing an existing schedule.
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?
Three short sentences, zero filler, with the critical gating constraint ('Requires manage scope and explicit user request') front-loaded before the action description. Every sentence carries distinct 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 9-parameter mutation tool with no output schema, the definition covers purpose, authorization, and ID sourcing but leaves the agent guessing about the response (does it return the new schedule ID?) and about how `pool`, `day`, and `time` interact to define a schedule. Adequate as a minimum, but not 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 only 11% (effectively just `amount`), and there are 9 parameters, so the description must carry the load and mostly doesn't. It implicitly maps a few fields — 'daily or monthly' to `frequency`, 'pause' to `enabled`, 'existing schedule IDs' to `id` — but `pool`, `day`, `time`, `name`, and the required `request_id` are never explained, which is a serious gap for a mutation tool.
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?
States a specific verb set and resource: 'Create/edit/pause a daily or monthly credit schedule.' It also distinguishes itself from the sibling lister by noting 'Existing schedule IDs come from budget_schedules.' What it leaves unresolved is how create vs. edit vs. pause is selected (apparently by presence of `id` / `enabled`), so the multi-mode nature stays slightly ambiguous.
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?
Explicit preconditions are given: 'Requires manage scope and explicit user request,' plus the scoping note 'Only accounting, not a payment.' That is genuinely useful routing context absent from the schema. It stops short of stating when NOT to use it or which sibling handles related operations (e.g., budget_schedules for listing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_schedulesBRead-only
List recurring credit schedules and their IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this is a non-mutating read, so the bar is lower. The phrase "and their IDs" adds a small amount of value about what comes back, but there is no indication of ordering, filtering, pagination, or what a schedule record contains.
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?
A single short sentence with the resource front-loaded and no filler. It is perhaps too terse to earn a 5, since brevity here comes at the cost of differentiation from the singular sibling.
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 zero-parameter read tool with no output schema, the description covers the basics but omits anything about the shape or count of results and does not resolve the `budget_schedules` versus `budget_schedule` overlap. Adequate minimum, but an agent could still pick the wrong sibling.
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 tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4 by rule. Schema coverage is 100% and the empty property set matches the 'list everything' framing.
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 gives a specific verb-plus-resource pairing ("List recurring credit schedules") and even indicates the payload includes IDs, so an agent knows exactly what this returns. It does not, however, distinguish itself from the near-identically named sibling `budget_schedule`, leaving ambiguity about which one enumerates versus manages a schedule.
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?
There is no statement of when to use this tool versus `budget_schedule`, `budget_settle`, or `budget_status`, and no prerequisites or exclusions. The agent must infer usage from the sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_settleAIdempotent
Requires manage scope. Explicitly settle a day early; automatic settlement already runs on the server. Safe to retry with the same request_id.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds two things annotations don't carry: an authorization requirement ('Requires manage scope') and the mechanism behind idempotency ('Safe to retry with the same request_id'), which is more actionable than the bare idempotentHint. It doesn't describe what early settlement changes in downstream state or whether it can be undone with budget_reverse, leaving some behavioral gaps.
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?
Three short clauses, no filler, with the scope prerequisite front-loaded before the usage note and the retry guarantee. Every sentence carries information an agent needs.
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 two-parameter mutation with no output schema, the description covers authorization, the default server behavior, and retry semantics. Missing only the date format/selection detail and any hint of the response, which keeps it from a 5.
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 0%, so the description must document both parameters. It effectively explains request_id as an idempotency key that must be reused on retry, but the `date` parameter is never mentioned — no indication it selects which day to settle, nor its expected format. Half the parameters remain unexplained.
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?
States a specific verb ('settle') and object ('a day'), clarified by the note that automatic settlement exists server-side, which distinguishes it from passive siblings like budget_status or budget_schedule. It never names the domain object being settled (budget/day ledger) or names a sibling alternative, so it stops short of a 5.
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 settle a day early; automatic settlement already runs on the server' gives a clear condition for use: only when you want to force settlement before the automatic run. The when-not is implied rather than stated, and no sibling tool (e.g., budget_reconcile) is named as the alternative for ordinary reconciliation, so it is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_statusARead-only
Read today's quota, pool balances, overspend and insolvency status. Money returned in integer cents.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read with no side effects, so the description only needs to add context — and it does, stating the temporal scope (today) and the unit convention (integer cents). It stops short of explaining what an "insolvency status" value looks like or whether quota/pool figures are combined or per-pool.
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 short sentences, zero filler, with the resource list front-loaded and the unit convention placed as a trailing caveat. Nothing here could be cut without losing 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?
With no parameters, no output schema, and only a readOnly annotation, the description carries most of the burden and does cover what the call reports plus the money unit. It falls slightly short by not indicating the shape of the response (e.g. flat fields vs. per-pool entries) for the listed values.
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 tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate. The added note that money is returned in integer cents is a useful unit hint even though it concerns output rather than input.
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?
Names a specific verb (Read) and a concrete set of resources (today's quota, pool balances, overspend, insolvency status), so the agent knows this is a current-snapshot report rather than a mutation. It never explicitly distinguishes itself from the near-named sibling budget_summary, which is the main ambiguity an agent faces here.
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?
Usage is only implied by the word "today's", which suggests a current-day snapshot versus the historical data in budget_transactions or budget_summary. There is no explicit when-to-use, when-not-to-use, or named alternative, so the agent must infer the routing from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_summaryARead-only
Read expected pool balances and settlements for a day YYYY-MM-DD or completed month YYYY-MM.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with 'Read', so no contradiction. The description contributes one genuinely useful behavioral constraint — the month must be 'completed' — but says nothing about what happens with an in-progress month, whether 'expected' versus actual figures are both returned, or the shape/magnitude of the response.
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?
A single front-loaded sentence with zero filler; the resource comes first and the period formats follow immediately. Nothing is repeated from the schema or annotations.
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 one-parameter read-only tool with annotations covering safety and no output schema, the description does the essential work: it names the returned content and encodes the accepted input formats that the schema omits. It could be stronger by clarifying the 'expected' versus settled distinction and how a non-completed month is handled.
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 0% and the single parameter has no description or pattern, so the description must carry the semantics — and it does, giving both accepted formats (YYYY-MM-DD for a day, YYYY-MM for a month) plus the 'completed month' constraint. It stops short of noting timezone or validation/error behavior for malformed values.
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?
States a specific verb ('Read') and a specific resource ('expected pool balances and settlements'), scoped by period granularity. It implicitly distinguishes itself from mutation siblings like budget_settle and budget_record, but never names them, so the differentiation is inference rather than declaration.
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 when the tool applies (a single day or a completed month) but gives no explicit when-to-use or when-not-to-use guidance against siblings such as budget_status, which likely also reports balances. The 'completed month' qualifier hints at an exclusion (current/partial months) without stating what to do in that case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_transactionsCRead-only
Read dated journal entries, including reversals and automatic allocations.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds useful scope detail by naming reversals and automatic allocations, but it omits pagination behavior implied by the offset parameter, default date ranges, and result limits or ordering.
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?
It is a single efficient sentence with the verb and content scope front-loaded. Nothing is wasted, though its brevity leaves informational gaps that the length score should not reward further.
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?
Annotations cover the read-only safety profile, but with no output schema and 0% parameter coverage, the description should explain date-range defaults and offset/pagination semantics. It does neither, leaving an agent unable to call the tool correctly in common cases.
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 0% and all three parameters (start, end, offset) are undocumented in the schema. The description only weakly implies date filtering via 'dated' and says nothing about the offset or its pagination role, so it fails to compensate for the coverage gap.
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 states a specific verb and resource ('Read dated journal entries') and scopes the content to reversals and automatic allocations, so an agent knows what data comes back. It does not differentiate from siblings such as budget_summary or budget_record, leaving the agent to infer that this returns individual entries rather than aggregates.
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 when-to-use or when-not-to-use guidance is provided. The description never mentions alternatives like budget_summary or budget_status, so the agent must guess whether to call this tool or an aggregation sibling.
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.
13 tool updates
v0.2.0- First observed
budget_ack_notification - First observed
budget_adjust_pool - First observed
budget_configure - First observed
budget_notifications - First observed
budget_reconcile - First observed
budget_record - First observed
budget_reverse - First observed
budget_schedule - First observed
budget_schedules - First observed
budget_settle - First observed
budget_status - First observed
budget_summary - First observed
budget_transactions
TDQS
Scored across 13 tools
Most tools target clearly distinct actions or resources, with readable boundaries between recording, reversing, settling, scheduling, and notification handling. Minor potential confusion exists between budget_status and budget_summary, and between budget_adjust_pool and budget_reconcile, though descriptions clarify the different effects.
All tools use a consistent budget_ prefix and snake_case. Suffixes mix nouns and verbs (budget_status, budget_record, budget_schedules, budget_ack_notification), which is readable but not a strict verb_noun pattern.
The 13 tools are well within a manageable range and each appears to serve a distinct budget/quota workflow. The set is neither thin nor bloated for a ledger-style server.
Core workflows are covered: status, transaction recording/reversal, summaries, reconciliation, scheduling, settlement, and notification acknowledgement. Minor gaps may exist around explicit pool lifecycle management and detailed single-record retrieval, but agents can work around them via existing list and adjustment tools.
Maintenance
Related MCP Connectors
The budget app your AI agent can use. Check budgets and log spending, with no bank logins.
Budget & cost control for AI agents — per-agent spend caps + rate limits before each call.
Agentic workflow budget approvals with usage receipts.
Personal finance ledger for AI agents — query spending, track bills, forecast cash flow.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to manage personal expenses through natural language conversations. Supports adding, searching, and analyzing transactions with automatic categorization and financial insights.3MIT
- AlicenseAqualityAmaintenanceRuntime budget authority for autonomous agents - a set of tools to check, reserve, spend, and release budget before and after every costly, risky operation. The agent asks "can I afford this?" before acting, and reports what it actually used afterward.982 npmApache 2.0
- AlicenseAqualityDmaintenanceSpending limits for AI agents. Create budgets, enforce limits, track spend across x402, cards, MPP, or any payment rail.73 npmApache 2.0
- AlicenseNot gradedqualityCmaintenanceBudget management and cost tracking MCP server for autonomous agents, enabling budget creation, cost recording, spending projections, and alert rules.MIT