FreeAgent MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.8.3 · published by io.usefulapi
Read FreeAgent contacts, invoices, bills, banking and reports; add contacts, draft invoices, time.
20 tools: 4 can delete or cancel things and 16 only read.
Scanned Oct 21, 2026
- Deletes or cancels4Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads16Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http freeagent https://freeagent.usefulapi.io/mcpFindings
Matches of fixed checks, with the text they matched.
The description mentions "credentials".
What this check looks forMatched text
description: "Fetch the FreeAgent company these credentials belong to — name, type (e.g. UkLimitedC..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
20 tools
Deletes or cancels 4Claude Code: deny
freeagent_create_contactCreate a client or supplier contact.No findings
Why it is in this group
- The name "freeagent_create_contact" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a client or supplier contact. Give either organisation_name, or first_name and last_name. FreeAgent: POST /v2/contacts.
Annotations the server declares
- title: Create a contact
- destructiveHint: true
freeagent_create_draft_invoiceCreate a sales invoice in DRAFT status.No findings
Why it is in this group
- The name "freeagent_create_draft_invoice" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a sales invoice in DRAFT status. Nothing is sent to the customer and nothing is posted as income until it is marked sent in FreeAgent; a draft can be edited or discarded there. FreeAgent: POST /v2/invoices.
Annotations the server declares
- title: Create a draft invoice
- destructiveHint: true
freeagent_create_timeslipLog time against a project task for a user.No findings
Why it is in this group
- The name "freeagent_create_timeslip" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Log time against a project task for a user. Get the user from freeagent_get_current_user and the task from freeagent_list_tasks. Editable or removable in FreeAgent afterwards. FreeAgent: POST /v2/timeslips.
Annotations the server declares
- title: Log a timeslip
- destructiveHint: true
freeagent_update_contactUpdate fields on an existing contact; only the fields you pass change.No findings
Why it is in this group
- The name "freeagent_update_contact" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update fields on an existing contact; only the fields you pass change. status=Hidden hides it (reversible with Active). FreeAgent: PUT /v2/contacts/:id.
Annotations the server declares
- title: Update a contact
- destructiveHint: true
Only reads 16Claude Code: allow
freeagent_get_balance_sheetBalance sheet — capital and current assets, liabilities and owners' equity — as at a date (default today).No findings
Why it is in this group
- The name "freeagent_get_balance_sheet" says "get": a word for reading.
Description, as the server wrote it Balance sheet — capital and current assets, liabilities and owners' equity — as at a date (default today). FreeAgent: GET /v2/accounting/balance_sheet.
Annotations the server declares
- title: Get the balance sheet
- readOnlyHint: true
freeagent_get_companyFetch the FreeAgent company these credentials belong to — name, type (e.g.1 finding
Why it is in this group
- The name "freeagent_get_company" says "get": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "Fetch the FreeAgent company these credentials belong to — name, type (e.g. UkLimitedC..."
Description, as the server wrote it Fetch the FreeAgent company these credentials belong to — name, type (e.g. UkLimitedCompany), currency, start date and VAT registration status. A cheap way to confirm the setup works. FreeAgent: GET /v2/company.
Annotations the server declares
- title: Get the company
- readOnlyHint: true
freeagent_get_contactFetch a single contact by id or URL.No findings
Why it is in this group
- The name "freeagent_get_contact" says "get": a word for reading.
Description, as the server wrote it Fetch a single contact by id or URL. FreeAgent: GET /v2/contacts/:id.
Annotations the server declares
- title: Get one contact
- readOnlyHint: true
freeagent_get_current_userFetch the FreeAgent user the token acts as, including their URL (needed for freeagent_create_timeslip) and permission level.No findings
Why it is in this group
- The name "freeagent_get_current_user" says "get": a word for reading.
Description, as the server wrote it Fetch the FreeAgent user the token acts as, including their URL (needed for freeagent_create_timeslip) and permission level. FreeAgent: GET /v2/users/me.
Annotations the server declares
- title: Get the current user
- readOnlyHint: true
freeagent_get_invoiceFetch a single invoice by id or URL, with its line items, totals, due and paid values.No findings
Why it is in this group
- The name "freeagent_get_invoice" says "get": a word for reading.
Description, as the server wrote it Fetch a single invoice by id or URL, with its line items, totals, due and paid values. FreeAgent: GET /v2/invoices/:id.
Annotations the server declares
- title: Get one invoice
- readOnlyHint: true
freeagent_get_profit_and_lossProfit and loss summary — income, expenses, operating and retained profit — for a date range or an accounting period (defaults to the current year to date).No findings
Why it is in this group
- The name "freeagent_get_profit_and_loss" says "get": a word for reading.
Description, as the server wrote it Profit and loss summary — income, expenses, operating and retained profit — for a date range or an accounting period (defaults to the current year to date). FreeAgent: GET /v2/accounting/profit_and_loss/summary.
Annotations the server declares
- title: Get profit and loss
- readOnlyHint: true
freeagent_get_tax_timelineList upcoming tax deadlines and amounts due — VAT returns, corporation tax, self assessment and so on.No findings
Why it is in this group
- The name "freeagent_get_tax_timeline" says "get": a word for reading.
Description, as the server wrote it List upcoming tax deadlines and amounts due — VAT returns, corporation tax, self assessment and so on. FreeAgent: GET /v2/company/tax_timeline.
Annotations the server declares
- title: Get the tax timeline
- readOnlyHint: true
freeagent_list_bank_accountsList bank, credit-card and PayPal accounts with their current balances.No findings
Why it is in this group
- The name "freeagent_list_bank_accounts" says "list": a word for reading.
Description, as the server wrote it List bank, credit-card and PayPal accounts with their current balances. Use an account's URL with freeagent_list_bank_transactions. FreeAgent: GET /v2/bank_accounts.
Annotations the server declares
- title: List bank accounts
- readOnlyHint: true
freeagent_list_bank_transactionsList the transactions on one bank account, e.g.No findings
Why it is in this group
- The name "freeagent_list_bank_transactions" says "list": a word for reading.
Description, as the server wrote it List the transactions on one bank account, e.g. view=unexplained for what still needs reconciling. FreeAgent: GET /v2/bank_transactions?bank_account=….
Annotations the server declares
- title: List bank transactions
- readOnlyHint: true
freeagent_list_billsList supplier bills (purchases), optionally by date range, contact or project, filtered by status.No findings
Why it is in this group
- The name "freeagent_list_bills" says "list": a word for reading.
Description, as the server wrote it List supplier bills (purchases), optionally by date range, contact or project, filtered by status. FreeAgent: GET /v2/bills.
Annotations the server declares
- title: List bills
- readOnlyHint: true
freeagent_list_contactsList contacts (clients and suppliers), with their account balance.No findings
Why it is in this group
- The name "freeagent_list_contacts" says "list": a word for reading.
Description, as the server wrote it List contacts (clients and suppliers), with their account balance. FreeAgent: GET /v2/contacts.
Annotations the server declares
- title: List contacts
- readOnlyHint: true
freeagent_list_expensesList expense claims (out-of-pocket spending and mileage), optionally by date range or project.No findings
Why it is in this group
- The name "freeagent_list_expenses" says "list": a word for reading.
Description, as the server wrote it List expense claims (out-of-pocket spending and mileage), optionally by date range or project. FreeAgent: GET /v2/expenses.
Annotations the server declares
- title: List expenses
- readOnlyHint: true
freeagent_list_invoicesList sales invoices, optionally for one contact or project, filtered by status.No findings
Why it is in this group
- The name "freeagent_list_invoices" says "list": a word for reading.
Description, as the server wrote it List sales invoices, optionally for one contact or project, filtered by status. FreeAgent: GET /v2/invoices.
Annotations the server declares
- title: List invoices
- readOnlyHint: true
freeagent_list_projectsList projects, optionally for one contact.No findings
Why it is in this group
- The name "freeagent_list_projects" says "list": a word for reading.
Description, as the server wrote it List projects, optionally for one contact. FreeAgent: GET /v2/projects.
Annotations the server declares
- title: List projects
- readOnlyHint: true
freeagent_list_tasksList project tasks with their billing rates, optionally for one project.No findings
Why it is in this group
- The name "freeagent_list_tasks" says "list": a word for reading.
Description, as the server wrote it List project tasks with their billing rates, optionally for one project. A task's URL is needed for freeagent_create_timeslip. FreeAgent: GET /v2/tasks.
Annotations the server declares
- title: List tasks
- readOnlyHint: true
freeagent_list_timeslipsList logged time, optionally by date range, user, task or project; view=unbilled for time not yet invoiced.No findings
Why it is in this group
- The name "freeagent_list_timeslips" says "list": a word for reading.
Description, as the server wrote it List logged time, optionally by date range, user, task or project; view=unbilled for time not yet invoiced. FreeAgent: GET /v2/timeslips.
Annotations the server declares
- title: List timeslips
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.8.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http freeagent https://freeagent.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__freeagent__freeagent_get_company",
"mcp__freeagent__freeagent_get_current_user",
"mcp__freeagent__freeagent_get_tax_timeline",
"mcp__freeagent__freeagent_list_contacts",
"mcp__freeagent__freeagent_get_contact",
"mcp__freeagent__freeagent_list_invoices",
"mcp__freeagent__freeagent_get_invoice",
"mcp__freeagent__freeagent_list_bills",
"mcp__freeagent__freeagent_list_expenses",
"mcp__freeagent__freeagent_list_bank_accounts",
"mcp__freeagent__freeagent_list_bank_transactions",
"mcp__freeagent__freeagent_list_projects",
"mcp__freeagent__freeagent_list_tasks",
"mcp__freeagent__freeagent_list_timeslips",
"mcp__freeagent__freeagent_get_profit_and_loss",
"mcp__freeagent__freeagent_get_balance_sheet"
],
"ask": [],
"deny": [
"mcp__freeagent__freeagent_create_contact",
"mcp__freeagent__freeagent_update_contact",
"mcp__freeagent__freeagent_create_draft_invoice",
"mcp__freeagent__freeagent_create_timeslip"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as freeagent. Review it before you use it.