# FreshBooks MCP

> FreshBooks MCP Server connects your small business accounting to any AI client. Use it to automate invoicing, track expenses, and manage clients by calling tools like `list_invoices` or fetching details with `get_client_details`. It gives you full visibility into billing status and cash flow without opening the web dashboard.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** invoicing, time-tracking, expense-management, client-management, billing, bookkeeping

## Description

Look, this FreshBooks MCP Server connects your whole small business accounting setup right into your AI client. You don't gotta open up the dashboard or click through a million pages; you just ask your agent to pull what you need, and it handles all the heavy lifting for you.

**Account Context & Identity:** Before running any reports, you can check the whole shebang with `get_account_info`—that pulls high-level metadata about your entire business account. If you wanna confirm who's using the system, run `get_my_identity`; it grabs your personal user profile and login details. You also gotta know what projects are running; `list_active_projects` gives you a list of all current gigs.

**Client Management:** When dealing with customers, you can pull up basic info for every person you've worked with using `list_clients`. If you need the deep dive on one specific customer, `get_client_details` fetches their full contact information and metadata. You maintain context on every client without leaving your chat window.

**Billing & Invoices:** For getting paid, this thing is gold. It gives you a summary list of every sales invoice with `list_invoices`, letting you instantly see if they're Paid, Overdue, or Sent. If you need the full receipts on one specific bill, run `get_invoice_details` by its ID to pull all the detailed info. You can track cash flow movements too; `list_payments` lists every payment received against your invoices. When it comes to tracking the actual work, use `list_time_entries` for detailed logs showing exactly when and how long time was recorded against any project. For specific assignments, `list_project_tasks` retrieves a list of tasks tied to your active projects.

**Expenses & Projects:** Tracking cash going out is simple. You can see all the expense categories your business uses with `list_expense_categories`, and then run `list_expenses` to get records of every tracked business expenditure and its initial metadata. The time logs you pull (`list_time_entries`) connect directly to project tracking; these details let you verify billable hours against specific projects.

## Tools

### get_account_info
Retrieves high-level metadata about your entire FreshBooks business account.

### get_client_details
Fetches the specific contact and metadata for a single client you name.

### get_invoice_details
Pulls full, detailed information about one specific sales invoice by its ID.

### get_my_identity
Retrieves your personal user profile and login identity details within the system.

### list_active_projects
Provides a list of all currently active projects in your account.

### list_clients
Generates a simple list containing the names and basic info for every client you have recorded.

### list_expense_categories
Shows all possible categories your business uses to track expenses.

### list_expenses
Lists records of all tracked business expenditures and their initial metadata.

### list_invoices
Generates a summary list of all sales invoices, including their current status (Paid, Overdue, Sent).

### list_payments
Lists every payment received against your invoices for monitoring cash flow.

### list_project_tasks
Retrieves a list of specific tasks associated with your active projects.

### list_time_entries
Pulls detailed logs showing when and how long time was recorded against various projects.

## Prompt Examples

**Prompt:** 
```
List my 5 most recent clients in FreshBooks.
```

**Response:** 
```
Retrieving clients... I found your 5 most recent entries, including 'Acme Corp' and 'Globex Inc'. Would you like the contact details for any of them?
```

**Prompt:** 
```
Show me the status of my last 3 invoices.
```

**Response:** 
```
Fetching invoices... Your last 3 invoices are: INV-001 (Paid), INV-002 (Sent), and INV-003 (Overdue). Would you like to see the details for the overdue one?
```

**Prompt:** 
```
Get my time tracking entries for this week.
```

**Response:** 
```
Retrieving time entries... I've fetched your logs for this week. You've recorded a total of 32 hours across projects 'Web Design' and 'Consulting'.
```

## Capabilities

### Billing Cycle Management
List sales invoices using `list_invoices` and pull detailed status updates with `get_invoice_details`.

### Client Relationship Tracking
Search for client metadata using `get_client_details` or get a list of all clients via `list_clients` to maintain context on every customer.

### Expense and Payment Logging
Retrieve structured lists of recorded business expenses (`list_expenses`) and track specific payments received through the `list_payments` tool.

### Time and Project Reporting
Access granular time logs using `list_time_entries` or check project status by calling `list_project_tasks` to verify billable hours.

### Account Context Retrieval
Get basic business profile information (`get_account_info`) and your personal user identity (`get_my_identity`) to confirm the correct context before running complex reports.

## Use Cases

### Checking client status before calling
A freelancer needs to confirm if a key client, 'Acme Corp,' is ready for billing. Instead of searching the dashboard, they ask their agent to use `get_client_details` and cross-reference that data with an invoice check using `list_invoices`. The agent confirms contact info *and* shows the last sent invoice status in one go.

### Reconciling payments against invoices
A bookkeeper needs to verify if a recent payment was applied correctly. They first run `list_payments` to get the date and amount, then use `get_invoice_details` with the invoice ID to see which specific charges that payment covered. This confirms accurate reconciliation without manual searching.

### Reviewing project profitability
A small business owner wants to know if a project was worth its cost. They ask the agent to combine `list_time_entries` (to get labor hours) with `list_expenses` (to get overhead costs). The agent aggregates this data, giving an immediate profit/loss overview.

### Onboarding a new user for billing
A team member needs to confirm they are working in the correct company account before running reports. They use `get_my_identity` first. This confirms their permissions and organizational context, ensuring that all subsequent calls (like `list_clients`) target the right business entity.

## Benefits

- Stop clicking through dashboards. You can ask the agent to 'List my 5 most recent clients' using `list_clients` instantly, getting names and contact summaries without leaving your chat window.
- Never miss cash flow details. The agent runs `list_payments`, giving you a clean list of every payment received so far, letting you confirm accurate revenue numbers immediately.
- Track client status at a glance. Instead of opening the invoice portal, prompt for 'Show me my overdue invoices' to use `list_invoices` and check statuses like Paid or Overdue.
- Manage job costs precisely. By calling `list_time_entries` and checking `list_project_tasks`, you can verify exact hours logged against a project before billing it out.
- Simplify tax prep. Run `list_expenses` to get all recorded business expenditures, categorized by the tool's output, making documentation much faster.

## How It Works

The bottom line is: your AI client treats FreshBooks like a single database connection, letting you run complex accounting queries with simple chat commands.

1. First, subscribe to this server on the Vinkius Marketplace. You'll need your FreshBooks Account ID and Access Token.
2. Next, prompt your AI client (Claude, Cursor, etc.) with a specific request—for example, 'What are my overdue invoices?'
3. The agent identifies the needed tool (`list_invoices`), calls it, receives the structured data payload, and formats it for you in plain language.

## Frequently Asked Questions

**How do I get an Access Token for FreshBooks?**
You can find your Access Token in your FreshBooks application settings or by creating a Personal Access Token in the FreshBooks Developer Portal.

**Where do I find my FreshBooks Account ID?**
Your Account ID is the unique number visible in your browser's URL bar immediately after '/portal/' when you are logged into FreshBooks.

**Can I see if a specific invoice has been paid?**
Yes! Use the 'get_invoice_details' tool and provide the Invoice ID. The agent will return the current status, including whether it is 'Sent', 'Paid', or 'Overdue'.

**Is time tracking data accessible via the agent?**
Yes, the 'list_time_entries' tool allows you to retrieve all time tracking logs for your business, keeping your project productivity in view.

**When I run `list_expenses`, does it include required metadata like receipts or original transaction dates?**
Yep. The tool returns detailed records for every expense entry you track. You get the amount, date, associated category (via `list_expense_categories`), and any attached notes. It's thorough.

**Using `list_clients`, can I filter results by client status or industry?**
Yes, you specify those parameters in the request payload. You get a clean list of clients matching your criteria instantly, which is way faster than manual dashboard filtering.

**What exactly does `get_account_info` provide? Is it just basic company details?**
It provides high-level metadata about the FreshBooks account itself. This includes general business identifiers and setup dates, but don't expect granular transaction data from this single call.

**Can I use `list_time_entries` to associate work time with a specific client?**
Yep. The time entry records contain the necessary client IDs or names. You can pass those identifiers directly to `get_client_details` afterward for full context on that client.