Skip to main content
Glama
freeagent-mcp-server

freeagent-mcp-server

by samaxbytez

freeagent_create_expense

Create a new FreeAgent expense with owner, category, date, gross value, optional project and currency, and attach a receipt in the same request.

Instructions

Create a new expense 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": {
      "user": "<user>",
      "category": "<category>",
      "dated_on": "<dated_on>",
      "gross_value": "<gross_value>"
    },
    "name": "freeagent_create_expense"
  }
}

Input Schema

NameRequiredDescriptionDefault
userYesUser URL for the expense owner
projectNoProject URL to associate with
categoryYesCategory URL for the expense
currencyNoCurrency code (e.g. GBP, USD)
dated_onYesDate of the expense (YYYY-MM-DD)
descriptionNoDescription of the expense
gross_valueYesGross value as a decimal string
rebill_typeNoRebill type for the expense
sales_tax_rateNoSales tax rate as a decimal string
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.
receipt_referenceNoReceipt reference for the expense

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.3/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 and the description is consistent with it. However, the description adds nothing beyond those annotations: no statement about what must exist beforehand, whether the expense is created in draft/claimed state, or how attachments or failures are handled.

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?

One short sentence with zero filler, but it is under-specified rather than concise — nothing is front-loaded because there is nothing to load. It neither wastes words nor earns its place.

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

Completeness2/5

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

For an 11-parameter mutation tool with 4 required fields and no output schema, the description omits anything an agent would want: required inputs, that user/category are URL references, currency defaults, or what the response contains. The rich schema compensates for parameters, but behavioral context is absent.

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 every one of the 11 parameters is documented in the schema itself, including the notable attachment_path behavior. The description adds no parameter meaning at all, so the baseline of 3 applies.

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

Purpose2/5

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

The description is a bare restatement of the tool name: 'Create a new expense in FreeAgent' adds no scope, no constraints, and no distinguishing detail beyond what 'freeagent_create_expense' already conveys. An agent learns nothing about what a valid expense requires or how it differs from siblings like freeagent_update_expense or freeagent_create_bill.

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 mention of prerequisites (e.g. needing an existing user and category), and no routing to alternatives such as freeagent_create_bill for supplier invoices. The only implied usage comes from the verb 'create'.

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