Skip to content

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.

Deletes · 4

20 tools: 4 can delete or cancel things and 16 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

1 info

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".

      Matched text

      description: "Fetch the FreeAgent company these credentials belong to — name, type (e.g. UkLimitedC..."

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.