Skip to main content
Glama
freeagent-mcp-server

freeagent-mcp-server

by samaxbytez

freeagent_update_bill

Destructive

Modify an existing FreeAgent bill's dates, reference, comments, or receipt attachment to keep accounting records current.

Instructions

Update an existing bill in FreeAgent

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": {
      "bill_id": "<bill_id>"
    },
    "name": "freeagent_update_bill"
  }
}

Input Schema

NameRequiredDescriptionDefault
due_onNoBill due date (YYYY-MM-DD)
bill_idYesThe ID of the bill to update
commentsNoComments on the bill
dated_onNoBill date (YYYY-MM-DD)
referenceNoBill reference
attachment_pathNoPath to a local receipt or invoice file to attach (PDF, PNG, JPEG or GIF, max 5MB). Sent in the same request, so the record is never created without its receipt.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv3.0.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / attachment_path
      Added value: +{
      +  "description": "Path to a local receipt or invoice file to attach (PDF, PNG, JPEG or GIF, max 5MB). Sent in the same request, so the record is never created without its receipt.",
      +  "type": "string"
      +}
  2. First observedv1.3.0

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is a destructive mutation, but the description adds nothing on top of that. Critically, it never says whether this is a partial patch (unspecified fields preserved) or a full replacement, nor what 'destructive' means here for existing field values. For a destructive write tool with zero added behavior, a 2 is warranted.

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 single sentence is front-loaded and free of fluff, but it is under-sized for a destructive six-parameter mutation tool. Brevity here reflects missing content rather than disciplined editing.

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?

Given the rich schema (100% covered) and the presence of annotations declaring the write/destructive profile, the description is nearly sufficient — the schema carries parameter meaning and annotations carry the safety profile. The remaining gap is update semantics (full replace vs. patch), which is a modest omission rather than a blocking one.

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

Parameters3/5

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

Schema description coverage is 100%, with each of the six parameters documented in the schema itself (dates, reference, comments, attachment_path with format/size limits). The description adds no semantics beyond that, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource ('Update an existing bill'), which is unambiguous against siblings like freeagent_update_invoice or freeagent_create_bill. It stops short of any sibling differentiation (e.g., how it differs from freeagent_get_bill or freeagent_delete_bill beyond the obvious), so it lands at clear-but-undifferentiated.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no preconditions (bill must exist, must be in a mutable state), and no mention of alternatives such as freeagent_delete_bill or freeagent_create_bill. The agent must infer entirely from the name.

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

Deploy Server

Other Tools