Skip to main content
Glama
avenir-mcp

avenir-mcp

Budget vs actual

get_budget_vs_actual
Read-onlyIdempotent

Compare each category's budget with actual spending for a month to reveal over-budget or nearly used-up categories.

Instructions

Share of each category's budget spent in a month, to see what is over or close.

Use it for "am I over budget?" or "which categories are nearly used up?". Give month as the first day of a month, YYYY-MM-01; any other day is refused. 'current' is the month in progress, where a share under 100 may only mean the month is not over. Amounts in currency units, spending as a positive number; utilization_pct above 100 means over budget. carried_over says what the months before left in the category, so budgeted plus carried_over is what the month had to spend: a category can be over its budget and still have something left. For what is still available in each category use get_category_balances; for the month's totals, get_monthly_summary; for the months before, get_spending_trends. One YNAB request; changes nothing.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "plan_id": "<plan_id>"
    },
    "name": "get_budget_vs_actual"
  }
}

Input Schema

NameRequiredDescriptionDefault
monthNoISO month 'YYYY-MM-01' or 'current'.current
plan_idYesYNAB plan id or 'last-used'.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.8.0
    • addedOutput schema / properties / result / items / properties / carried_over
      Added value: +{
      +  "description": "What the months before left available in the category when this one started; zero\nwhen the category started the month on nothing.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / result / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "group",
      -  "budgeted",
      -  "actual",
      -  "balance",
      -  "utilization_pct"
      -]New value: +[
      +  "id",
      +  "name",
      +  "group",
      +  "budgeted",
      +  "carried_over",
      +  "actual",
      +  "balance",
      +  "utilization_pct"
      +]
  2. First observedv0.1.0

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, and the description still adds real context beyond them: the month argument is validated and 'any other day is refused', 'current' may be misleading mid-month, and 'One YNAB request; changes nothing' quantifies cost and mutability. It also explains output semantics (utilization_pct > 100 = over budget, carried_over adds to budgeted) so the agent can interpret results, not just call the tool.

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

Conciseness5/5

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

Front-loaded with the purpose, then use cases, then parameter constraints, then return semantics, then routing to siblings. No sentence is filler; even the short routing block consolidates three alternatives in one place rather than scattering them.

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

Completeness5/5

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

An output schema exists, so the description needn't enumerate fields, yet it still clarifies the two counterintuitive ones (utilization_pct and carried_over, including the 'over budget but still has money left' case). With annotations covering safety, nothing an agent needs to call or interpret this correctly is missing.

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

Parameters5/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema does not carry: month must be strictly the first day of a month or it is refused, and 'current' denotes the in-progress month whose sub-100 share may be an artifact of incompleteness. That is genuine interpretation guidance beyond the schema's terse one-liners.

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

Purpose5/5

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

Opens with a specific verb+resource+scope: 'Share of each category's budget spent in a month, to see what is over or close.' It names three sibling tools (get_category_balances, get_monthly_summary, get_spending_trends) and states each one's distinct scope, so an agent can route without opening any schema.

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

Usage Guidelines5/5

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

Provides explicit use-case phrasings ('am I over budget?', 'which categories are nearly used up?') and explicit alternatives with the condition that selects each: balances for what is still available, monthly summary for totals, spending trends for prior months.

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