Skip to main content
Glama
OxygenBubbles

FreeAgent MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoIf set, serves over HTTP on this port instead of stdio
AUTH_TOKENNoBearer token required on every HTTP request when PORT is set
ORS_API_KEYNoOpenRouteService API key for drive-distance lookups
VENDOR_CATEGORIESNoJSON object extending built-in vendor to category mapping
MILEAGE_RATE_PENCENoFixed pence-per-mile rate; overrides HMRC logic when set
FREEAGENT_CLIENT_IDYesOAuth client ID from FreeAgent Developer API
GOOGLE_MAPS_API_KEYNoGoogle Maps API key for drive-distance lookups (alternative to ORS)
HMRC_RATE_LOW_PENCENoHMRC low-band rate in pence25
HMRC_RATE_HIGH_PENCENoHMRC high-band rate in pence45
HMRC_THRESHOLD_MILESNoMiles per tax year before low band kicks in10000
MILEAGE_CATEGORY_URLNoFreeAgent category URL for mileage expenses/v2/categories/311
FREEAGENT_CLIENT_SECRETYesOAuth client secret from FreeAgent Developer API
FREEAGENT_REFRESH_TOKENYesLong-lived refresh token obtained via OAuth flow

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
freeagent_list_bank_accountsA

List all bank accounts on the FreeAgent account. Returns account name, currency, current balance and status. Use this to find the bank account ID before listing transactions.

freeagent_list_transactionsA

List bank account transactions from FreeAgent. By default returns unexplained (unreconciled) transactions. Use bankAccountId from freeagent_list_bank_accounts. Returns id, date, description, amount, and explanation details (category, marked_for_review) for each entry. After listing, if the task involves reconciliation, search available email or file sources for matching receipts — do not ask the user to provide files before checking email (Gmail, Outlook, etc.) and local sources first.

freeagent_explain_transactionA

Approve or update a FreeAgent bank transaction explanation. Use this to:

  • Approve a 'marked for review' transaction (set markExplained=true)

  • Change the category or description of an explanation

  • Attach a receipt/invoice — PREFER filePath (a local file) or fileUrl (a download link); the server reads/encodes it. Re-attaching replaces any existing attachment. Get the explanationId from freeagent_list_transactions (explanation_id field).

RECEIPTS: Before asking the user for a file, search connected email tools (Gmail, Outlook/M365) for a matching invoice using vendor name, amount and date. Pass a download link as fileUrl, or save the PDF locally and pass filePath. Avoid fileBase64 for anything but tiny files — large inline base64 is unreliable. Also check local file sources (Downloads folder, etc.) if the user has mentioned them.

SAFETY: Only set markExplained=true when you have a confirmed receipt attached or the user has explicitly approved it.

freeagent_list_categoriesA

List FreeAgent expense categories (chart of accounts). Returns category URL, description, nominal code and group. Use the category URL when creating expenses or explaining transactions. Cached after first call.

freeagent_list_projectsA

List FreeAgent projects. Returns project URL, name, status and contact. Use the project URL to tag an expense to a client engagement via freeagent_create_expense.

freeagent_create_expenseA

Create an expense in FreeAgent — for purchases on a personal card or cash that need claiming back. Provide vendor, date, amount, description and category. If categoryUrl is omitted, auto-selects from vendor mapping. Optionally pass bankAccountId to auto-match and explain a corresponding bank transaction (e.g. if the same purchase also appears on a company card).

RECEIPTS: Before asking the user for a file, search connected email tools (Gmail, Outlook/M365) for a matching invoice. Use vendor name, amount and date as search terms. Download the PDF and pass it as fileBase64 + fileName. Also check local sources (Downloads folder, etc.) if the user has mentioned them.

freeagent_create_mileage_expenseA

Create a mileage expense in FreeAgent. Provide either origin + destination (requires ORS_API_KEY or GOOGLE_MAPS_API_KEY for distance lookup) or manualMiles for the journey distance. Set roundTrip=true to double the distance.

The claim value is calculated by FreeAgent from the mileage rate configured on the account (this is what HMRC reporting in FreeAgent uses). ratePence / cumulativeMilesYTD only produce an advisory estimate in the response for cross-checking — they do not change what is filed.

freeagent_list_contactsA

List FreeAgent contacts (clients and suppliers). Returns contact URL, name, email, status and outstanding account balance. Use the contact URL when raising an invoice or entering a supplier bill.

freeagent_create_contactA

Create a contact in FreeAgent — a client to invoice or a supplier to record bills against. Supply either an organisation name or a first/last name (or both).

freeagent_list_invoicesA

List FreeAgent invoices with their status and outstanding balance. Use view='overdue' to chase late payers, 'open_or_overdue' for everything unpaid, or 'draft' for invoices not yet issued.

freeagent_get_invoiceA

Fetch a single FreeAgent invoice in full, including its line items.

freeagent_create_invoiceA

Raise an invoice in FreeAgent. Created as a DRAFT — it is not sent to the client. Use freeagent_update_invoice_status with 'mark_as_sent' once you have issued it.

Find the contact with freeagent_list_contacts and the income category with freeagent_list_categories (income categories, e.g. 001 Sales).

freeagent_update_invoice_statusA

Change an invoice's status in FreeAgent: mark_as_sent (issue it), mark_as_draft (pull it back), mark_as_scheduled, or mark_as_cancelled. These change status only — no email is sent to the client.

freeagent_delete_invoiceA

Permanently delete a FreeAgent invoice. Only draft invoices can normally be deleted — cancel an issued invoice instead with freeagent_update_invoice_status.

freeagent_list_billsA

List FreeAgent bills — money the company owes to suppliers (accounts payable). Use view='open_or_overdue' to see what is still to pay.

freeagent_create_billA

Record a supplier bill (an invoice the company has received and owes). Each line needs a spending category and a value including tax.

RECEIPTS: before asking the user for the PDF, search connected email tools (Gmail, Outlook/M365) for the supplier invoice and pass it as fileBase64 + fileName.

freeagent_delete_billA

Permanently delete a FreeAgent bill.

freeagent_list_tasksA

List project tasks in FreeAgent. Time is always logged against a task, so use this to find the task URL before creating a timeslip.

freeagent_create_taskA

Create a task on a FreeAgent project. Tasks carry the billing rate that logged time is charged at.

freeagent_list_timeslipsA

List logged time in FreeAgent for a date range. Use view='unbilled' to find time that has not yet been invoiced. Returns per-project totals alongside the individual entries.

freeagent_create_timeslipA

Log time against a FreeAgent project task. Defaults to the authenticated user as the person who did the work. Find the task with freeagent_list_tasks.

freeagent_delete_timeslipB

Delete a logged timeslip from FreeAgent.

freeagent_profit_and_lossA

FreeAgent profit and loss summary — income, expenses, operating profit, corporation tax estimate, dividends and retained profit. Defaults to the current accounting year.

freeagent_trial_balanceA

FreeAgent trial balance — the balance on every nominal account. Credits are negative, debits positive. Useful for a full financial position.

freeagent_aged_debtorsA

Aged debtors — unpaid customer invoices bucketed by how overdue they are (not yet due, 1-30, 31-60, 61-90, 90+ days). Shows who owes what and for how long.

freeagent_aged_creditorsA

Aged creditors — unpaid supplier bills bucketed by how overdue they are. Shows what the company owes and for how long.

freeagent_tax_timelineA

Upcoming tax and filing deadlines from FreeAgent — VAT returns, corporation tax, Companies House filings, self assessment — with amounts due and dates.

freeagent_company_summaryA

FreeAgent company details — name, type, company registration number, VAT registration status, accounting year end and currency.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OxygenBubbles/freeagent-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server