Skip to main content
Glama
freeagent-mcp-server

freeagent-mcp-server

by samaxbytez

freeagent_create_bill

Create a supplier bill in FreeAgent with line items, tax rates, due dates, and an optional receipt attachment to record costs and track payments.

Instructions

Create a new bill in FreeAgent. bill_items should be a JSON string array of objects with category (URL), description, total_value, and sales_tax_rate.

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": {
      "contact": "<contact>",
      "reference": "<reference>",
      "dated_on": "<dated_on>",
      "due_on": "<due_on>",
      "bill_items": "<bill_items>"
    },
    "name": "freeagent_create_bill"
  }
}

Input Schema

NameRequiredDescriptionDefault
due_onYesBill due date (YYYY-MM-DD)
contactYesContact URL for the bill
commentsNoComments on the bill
currencyNoCurrency code, e.g. GBP
dated_onYesBill date (YYYY-MM-DD)
referenceYesBill reference
bill_itemsYesJSON array of bill items, e.g. [{"category":"https://...","description":"Item","total_value":"100.00","sales_tax_rate":"20.0"}]
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

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: no statement about prerequisites (contact and category URLs must reference existing records), no note about what happens on partial failure or duplicate references, and no rate-limit or permission context for a mutation tool.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and followed by the one parameter worth flagging. The bill_items sentence partially duplicates the schema, keeping it from a top score, but there is no filler.

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?

For an 8-parameter create tool with no output schema, the structured fields carry most of the load: every parameter is documented, including attachment handling. The gap is context rather than field documentation, since the description never says these URL-valued fields must come from list_contacts and list_categories.

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%, so this is baseline 3. The second sentence does restate the bill_items shape, but it largely duplicates the schema's own description and example, adding no new constraints such as whether total_value is gross or net of tax.

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 ('Create a new bill in FreeAgent'), so an agent immediately knows this is the write counterpart to list_bills/get_bill. It does not distinguish itself from adjacent creation tools such as create_invoice or create_expense, which would require the agent to infer the difference.

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 prerequisites, and no mention of alternatives such as create_expense or create_invoice. The agent must infer entirely from the name when a bill is the correct record type.

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