freeagent-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FREEAGENT_SANDBOX | No | Set to true for sandbox (defaults to production) | |
| FREEAGENT_BASE_URL | No | Override API base URL | |
| FREEAGENT_CLIENT_ID | No | OAuth2 client ID from Developer Dashboard | |
| FREEAGENT_ACCESS_TOKEN | No | Direct access token (skips stored token flow) | |
| FREEAGENT_CLIENT_SECRET | No | OAuth2 client secret from Developer Dashboard |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| freeagent_get_companyA | Get information about the authenticated FreeAgent company, including name, type, currency, and other settings. |
| freeagent_list_business_categoriesB | List the available business categories for the company. These are used to classify the type of business. |
| freeagent_get_tax_timelineA | Get the tax timeline for the company, showing upcoming tax deadlines and obligations. |
| freeagent_list_usersB | List all users in the FreeAgent account |
| freeagent_get_userA | Get a specific user by ID |
| freeagent_get_current_userA | Get the currently authenticated user |
| freeagent_create_userC | Create a new user in the FreeAgent account |
| freeagent_update_userC | Update an existing user |
| freeagent_delete_userB | Delete a user from the FreeAgent account |
| freeagent_list_contactsB | List contacts from FreeAgent with optional filtering and sorting |
| freeagent_get_contactA | Get a single contact from FreeAgent by ID |
| freeagent_create_contactA | Create a new contact in FreeAgent. Must provide either first_name and last_name, or organisation_name. |
| freeagent_update_contactC | Update an existing contact in FreeAgent |
| freeagent_delete_contactB | Delete a contact from FreeAgent |
| freeagent_list_projectsA | List projects from FreeAgent, optionally filtered by view, sort order, or contact |
| freeagent_get_projectB | Get a single project from FreeAgent by ID |
| freeagent_create_projectC | Create a new project in FreeAgent |
| freeagent_update_projectC | Update an existing project in FreeAgent |
| freeagent_delete_projectB | Delete a project from FreeAgent |
| freeagent_list_tasksB | List tasks from FreeAgent. Optionally filter by view, project, or updated_since. |
| freeagent_get_taskB | Get a specific task by ID from FreeAgent. |
| freeagent_create_taskB | Create a new task in FreeAgent. The project URL is required and passed as a query parameter. |
| freeagent_update_taskC | Update an existing task in FreeAgent. |
| freeagent_delete_taskB | Delete a task from FreeAgent. |
| freeagent_list_timeslipsB | List timeslips from FreeAgent. Can be filtered by date range, user, task, project, and billing status. |
| freeagent_get_timeslipB | Get a single timeslip by its ID. |
| freeagent_create_timeslipB | Create a new timeslip in FreeAgent for tracking time against a project task. |
| freeagent_update_timeslipB | Update an existing timeslip in FreeAgent. |
| freeagent_delete_timeslipB | Delete a timeslip from FreeAgent. |
| freeagent_start_timerA | Start a running timer on a timeslip. The timeslip will accumulate time until the timer is stopped. |
| freeagent_stop_timerB | Stop a running timer on a timeslip. |
| freeagent_list_invoicesB | List invoices from FreeAgent, optionally filtered by view, sort order, contact, project, or updated date |
| freeagent_get_invoiceB | Get a single invoice from FreeAgent by ID |
| freeagent_create_invoiceB | Create a new invoice in FreeAgent |
| freeagent_update_invoiceC | Update an existing invoice in FreeAgent |
| freeagent_delete_invoiceB | Delete an invoice from FreeAgent |
| freeagent_mark_invoice_as_sentB | Mark an invoice as sent in FreeAgent |
| freeagent_mark_invoice_as_draftB | Mark an invoice as draft in FreeAgent |
| freeagent_mark_invoice_as_cancelledC | Cancel an invoice in FreeAgent |
| freeagent_send_invoice_emailB | Send an invoice by email from FreeAgent |
| freeagent_list_estimatesB | List estimates from FreeAgent with optional filtering |
| freeagent_get_estimateB | Get a single estimate from FreeAgent by ID |
| freeagent_create_estimateB | Create a new estimate in FreeAgent |
| freeagent_update_estimateB | Update an existing estimate in FreeAgent |
| freeagent_delete_estimateB | Delete an estimate from FreeAgent |
| freeagent_mark_estimate_as_sentB | Mark an estimate as sent in FreeAgent |
| freeagent_mark_estimate_as_approvedB | Mark an estimate as approved in FreeAgent |
| freeagent_list_billsB | List bills from FreeAgent with optional filtering by view, date range, contact, or project |
| freeagent_get_billA | Get a single bill from FreeAgent by ID |
| freeagent_create_billC | 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. |
| freeagent_update_billB | Update an existing bill in FreeAgent |
| freeagent_delete_billB | Delete a bill from FreeAgent |
| freeagent_list_credit_notesC | List credit notes from FreeAgent with optional filtering and sorting |
| freeagent_get_credit_noteA | Get a single credit note from FreeAgent by ID |
| freeagent_create_credit_noteC | Create a new credit note in FreeAgent |
| freeagent_update_credit_noteB | Update an existing credit note in FreeAgent |
| freeagent_delete_credit_noteB | Delete a credit note from FreeAgent |
| freeagent_list_expensesA | List expenses from FreeAgent with optional filtering by view, date range, and project |
| freeagent_get_expenseB | Get a single expense from FreeAgent by ID |
| freeagent_create_expenseC | Create a new expense in FreeAgent |
| freeagent_update_expenseB | Update an existing expense in FreeAgent |
| freeagent_delete_expenseB | Delete an expense from FreeAgent |
| freeagent_list_bank_accountsA | List bank accounts from FreeAgent with optional view filter |
| freeagent_get_bank_accountB | Get a single bank account from FreeAgent by ID |
| freeagent_create_bank_accountB | Create a new bank account in FreeAgent |
| freeagent_update_bank_accountB | Update an existing bank account in FreeAgent |
| freeagent_delete_bank_accountB | Delete a bank account from FreeAgent |
| freeagent_list_bank_transactionsB | List bank transactions from FreeAgent for a specific bank account |
| freeagent_get_bank_transactionB | Get a single bank transaction from FreeAgent by ID |
| freeagent_list_categoriesC | List all categories from FreeAgent, optionally including sub-accounts |
| freeagent_get_categoryB | Get a single category from FreeAgent by nominal code |
| freeagent_get_profit_and_lossB | Get the profit and loss summary from FreeAgent with optional date range filtering |
| freeagent_get_balance_sheetB | Get the balance sheet from FreeAgent, optionally as at a specific date |
| freeagent_get_opening_balancesA | Get the opening balances from the FreeAgent balance sheet |
| freeagent_get_trial_balanceC | Get the trial balance summary from FreeAgent with optional date range filtering |
| freeagent_get_trial_balance_openingA | Get the trial balance opening balances from FreeAgent |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 76 tools
Each tool targets a distinct entity and action (create, get, list, update, delete, etc.) with clear naming. Entities like bill, expense, invoice, etc. are well-differentiated, minimizing ambiguity.
All tools follow the pattern 'freeagent_verb_noun' with consistent verbs (create, get, list, update, delete) and nouns (bank_account, bill, contact, etc.). Special actions like mark_estimate_as_sent also fit the pattern.
At 76 tools, the count is high but appropriate for a comprehensive integration with FreeAgent, covering many entities and lifecycle operations. It is slightly above the typical range but not excessive for the domain.
CRUD operations cover most entities, but notable gaps exist: there is no tool to record a payment against an invoice, mark an invoice as paid, or apply a credit note to an invoice. These are common accounting workflows missing from the surface.