Skip to main content
Glama

Update projection

update_projection
Destructive

Update projected values for specific accounts and months in the financial plan. Use this when the user asks to change a projection, forecast, or budget number. Empty books are created on first write (the named account is added as CASH OUT unless the name is clearly revenue). Only current and future months can be updated — past months with bank actuals are protected. IMPORTANT: If an account already has non-zero values, you must specify mode="add" to add on top of existing values, or mode="set" with force=true to replace. Without these, the tool will return the current values and ask for clarification.

Routing: Call get_projections first to see current values — an account with existing non-zero values needs mode="add" to layer on top or mode="set"+force=true to replace

[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time. Call it on the first clear ask; the card is the yes — do not re-ask in chat.]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNoHow to apply the value. "set" = replace existing value (default) — pair with force=true to skip the overwrite confirmation. "add" = add on top of the existing value — use when the user says add/include/put in/layer on top.
forceNoWhen mode="set", skip the overwrite confirmation for non-zero values. Use only when user explicitly wants to replace existing values.
updatesYesArray of month+value pairs — supports multiple months in one call, e.g. [{ month: "apr", value: 15000 }, { month: "may", value: 16000 }].
companyIdYesFreedomOS company id to act within (you must be a member). Required for company-scoped tools.
fiscal_yearNoFiscal year to update (default: current year)
account_nameYesAccount name to update. Matches an existing line, or creates it on first write (CASH OUT unless the name is clearly revenue).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / mode / description
      Previous value: -"How to apply the value. \"set\" = replace existing value (default). \"add\" = add on top of existing value."New value: +"How to apply the value. \"set\" = replace existing value (default) — pair with force=true to skip the overwrite confirmation. \"add\" = add on top of the existing value — use when the user says add/include/put in/layer on top."
    • changedInput schema / properties / updates / description
      Previous value: -"Array of month+value pairs"New value: +"Array of month+value pairs — supports multiple months in one call, e.g. [{ month: \"apr\", value: 15000 }, { month: \"may\", value: 16000 }]."
    • changedInput schema / properties / updates / items / properties / value / description
      Previous value: -"Dollar value (positive number)"New value: +"Dollar value (positive number — expenses are stored as positive in the CASH OUT section)."
  2. Changed1 schema field changed
    • changedInput schema / properties / account_name / description
      Previous value: -"Account name to update (must match closely, e.g., \"Software Revenue\", \"AWS Hosting\"). Use get_projections to see exact names first."New value: +"Account name to update. Matches an existing line, or creates it on first write (CASH OUT unless the name is clearly revenue)."
  3. First observed

TDQS

A4.4/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing side effects: empty books are created on first write, accounts default to CASH OUT unless clearly revenue, past months with bank actuals are protected, and non-zero accounts require mode='add' or mode='set'+force=true. It also documents the write-tier approval behavior. This aligns with destructiveHint=true and adds substantial operational context.

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

Conciseness3/5

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

The description is information-dense and front-loaded with the purpose, but it repeats the mode='add' / mode='set'+force=true guidance almost verbatim in both the IMPORTANT paragraph and the Routing paragraph. The write-tier approval note is also lengthy. Every sentence is useful, but the redundancy makes it less concise than it could be.

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

Completeness4/5

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

The description covers side effects, protected months, mode requirements, the recommended pre-call workflow, and approval behavior. It does not explicitly describe the success response shape, but the description is otherwise complete enough for an agent to invoke the tool correctly, especially given the rich input schema.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents mode and force well. The description adds meaning beyond the schema by explaining first-write creation, CASH OUT defaulting, and the non-zero value behavior. There is some redundancy with the schema's mode description, but the added context is useful.

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

Purpose5/5

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

The description uses a specific verb-plus-resource construction: 'Update projected values for specific accounts and months in the financial plan.' It also states when to use it ('when the user asks to change a projection, forecast, or budget number'), which clearly differentiates it from the many other update_* siblings.

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

Usage Guidelines4/5

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

The description gives an explicit trigger condition and a routing instruction to call get_projections first. It does not name alternative tools or state explicit 'when not to use' conditions, but the usage context is clear enough for an agent to select this tool correctly.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources