FreshBooks MCP Server for Cloudflare Workers
Test FreshBooks tools directly in your browser. Select a tool and provide inputs to see the results.
Create a free account to test FreshBooks tools interactively. No credit card required.
freshbooks_delete_invoiceDelete (archive) an invoice from FreshBooks. Args: - id: Invoice ID to delete Returns: Confirmation of deletion.
freshbooks_convert_estimate_to_invoiceConvert an accepted estimate to an invoice. Args: - id: Estimate ID to convert Returns: The created invoice record.
freshbooks_delete_estimateDelete (archive) an estimate from FreshBooks. Args: - id: Estimate ID to delete Returns: Confirmation of deletion.
freshbooks_send_estimateSend an estimate via email. Args: - id: Estimate ID to send - recipients: Array of email addresses Returns: Confirmation of sending.
freshbooks_list_clientsList clients from FreshBooks with pagination. Returns a paginated list of clients. Args: - page: Page number (1-based, default: 1) - perPage: Number of clients per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Client[], count, total, page, pages, hasMore } Markdown format: Formatted table of clients
freshbooks_get_clientGet a single client by ID. Args: - id: The client ID - format: Response format ('json' or 'markdown') Returns: The client record with all available fields.
freshbooks_create_clientCreate a new client in FreshBooks. Args: - organization: Business/organization name - firstName: First name - lastName: Last name - email: Email address - workPhone: Work phone number - homePhone: Home phone number - mobilePhone: Mobile phone number - billingStreet: Billing street address - billingCity: Billing city - billingProvince: Billing province/state - billingPostalCode: Billing postal code - billingCountry: Billing country - currencyCode: Currency code (e.g., 'USD', 'CAD') - language: Language code - note: Notes about the client Returns: The created client record.
freshbooks_update_clientUpdate an existing client. Args: - id: Client ID to update - (same fields as create) Returns: The updated client record.
freshbooks_delete_clientDelete (archive) a client from FreshBooks. Args: - id: Client ID to delete Returns: Confirmation of deletion.
freshbooks_list_estimatesList estimates from FreshBooks with pagination. Returns a paginated list of estimates. Args: - page: Page number (1-based, default: 1) - perPage: Number of estimates per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Estimate[], count, total, page, pages, hasMore } Markdown format: Formatted table of estimates
freshbooks_get_estimateGet a single estimate by ID. Args: - id: The estimate ID - format: Response format ('json' or 'markdown') Returns: The estimate record with all available fields including line items.
freshbooks_create_estimateCreate a new estimate in FreshBooks. Args: - clientId: Client ID (required) - createDate: Estimate date in YYYY-MM-DD format (required) - lines: Array of line items (required) - currencyCode: Currency code (e.g., 'USD', 'CAD') - language: Language code - poNumber: Purchase order number - discountValue: Discount percentage - notes: Notes to appear on estimate - terms: Terms and conditions - street: Client street address override - city: Client city override - province: Client province override - postalCode: Client postal code override - country: Client country override Returns: The created estimate record.
freshbooks_update_estimateUpdate an existing estimate. Args: - id: Estimate ID to update - (same fields as create, plus action fields) - actionMarkAsSent: Mark estimate as sent - actionEmail: Send estimate via email - emailRecipients: Array of email addresses to send to Returns: The updated estimate record.
freshbooks_list_expense_categoriesList expense categories from FreshBooks with pagination. Returns a paginated list of expense categories used to classify expenses. Args: - page: Page number (1-based, default: 1) - perPage: Number of categories per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: ExpenseCategory[], count, total, page, pages, hasMore } Markdown format: Formatted table of expense categories
freshbooks_get_expense_categoryGet a single expense category by ID. Args: - id: The expense category ID - format: Response format ('json' or 'markdown') Returns: The expense category record with all available fields.
freshbooks_list_expensesList expenses from FreshBooks with pagination. Returns a paginated list of expenses. Args: - page: Page number (1-based, default: 1) - perPage: Number of expenses per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Expense[], count, total, page, pages, hasMore } Markdown format: Formatted table of expenses
freshbooks_get_expenseGet a single expense by ID. Args: - id: The expense ID - format: Response format ('json' or 'markdown') Returns: The expense record with all available fields.
freshbooks_update_invoiceUpdate an existing invoice. Args: - id: Invoice ID to update - (same fields as create, plus action fields) - actionMarkAsSent: Mark invoice as sent - actionEmail: Send invoice via email - emailRecipients: Array of email addresses to send to - emailSubject: Custom email subject - emailBody: Custom email body Returns: The updated invoice record.
freshbooks_create_expenseCreate a new expense in FreshBooks. Args: - amount: Amount object with 'amount' (string) and 'code' (currency) - date: Expense date in YYYY-MM-DD format (required) - categoryId: Expense category ID (required) - staffId: Staff member ID (required) - vendor: Vendor name - projectId: Associated project ID - clientId: Associated client ID - notes: Notes about the expense - taxName1: First tax name - taxAmount1: First tax amount - taxPercent1: First tax percentage - taxName2: Second tax name - taxAmount2: Second tax amount - taxPercent2: Second tax percentage - markupPercent: Markup percentage for billing Returns: The created expense record.
freshbooks_update_expenseUpdate an existing expense. Args: - id: Expense ID to update - (same fields as create) Returns: The updated expense record.
freshbooks_delete_expenseDelete (archive) an expense from FreshBooks. Args: - id: Expense ID to delete Returns: Confirmation of deletion.
freshbooks_list_invoicesList invoices from FreshBooks with pagination. Returns a paginated list of invoices. Args: - page: Page number (1-based, default: 1) - perPage: Number of invoices per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Invoice[], count, total, page, pages, hasMore } Markdown format: Formatted table of invoices
freshbooks_get_invoiceGet a single invoice by ID. Args: - id: The invoice ID - format: Response format ('json' or 'markdown') Returns: The invoice record with all available fields including line items.
freshbooks_get_paymentGet a single payment by ID. Args: - id: The payment ID - format: Response format ('json' or 'markdown') Returns: The payment record with all available fields.
freshbooks_create_paymentRecord a new payment in FreshBooks. Args: - invoiceId: Invoice ID the payment is for (required) - amount: Amount object with 'amount' (string) and 'code' (currency) (required) - date: Payment date in YYYY-MM-DD format (required) - type: Payment type (e.g., 'Check', 'Credit', 'Cash', 'Bank Transfer', 'PayPal') - note: Notes about the payment Returns: The created payment record.
freshbooks_create_invoiceCreate a new invoice in FreshBooks. Args: - clientId: Client ID (required) - createDate: Invoice date in YYYY-MM-DD format (required) - lines: Array of line items (required) - dueOffsetDays: Number of days until due - currencyCode: Currency code (e.g., 'USD', 'CAD') - language: Language code - poNumber: Purchase order number - discountValue: Discount percentage - discountDescription: Description of discount - notes: Notes to appear on invoice - terms: Payment terms - depositAmount: Deposit amount - depositPercentage: Deposit percentage - street: Client street address override - city: Client city override - province: Client province override - postalCode: Client postal code override - country: Client country override Returns: The created invoice record.
freshbooks_send_invoiceSend an invoice via email. Args: - id: Invoice ID to send - recipients: Array of email addresses - subject: Email subject (optional) - body: Email body (optional) Returns: Confirmation of sending.
freshbooks_list_itemsList items/products from FreshBooks with pagination. Returns a paginated list of items that can be used on invoices. Args: - page: Page number (1-based, default: 1) - perPage: Number of items per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Item[], count, total, page, pages, hasMore } Markdown format: Formatted table of items
freshbooks_get_itemGet a single item by ID. Args: - id: The item ID - format: Response format ('json' or 'markdown') Returns: The item record with all available fields.
freshbooks_create_itemCreate a new item/product in FreshBooks. Args: - name: Item name (required) - description: Item description - sku: Stock keeping unit code - qty: Default quantity - unitCost: Unit cost object with 'amount' and 'code' (currency) - inventory: Inventory count - tax1: First tax ID - tax2: Second tax ID Returns: The created item record.
freshbooks_update_itemUpdate an existing item. Args: - id: Item ID to update - name: New name - description: New description - sku: New SKU - qty: New default quantity - unitCost: New unit cost - inventory: New inventory count - tax1: New first tax ID - tax2: New second tax ID Returns: The updated item record.
freshbooks_delete_itemDelete (archive) an item from FreshBooks. Args: - id: Item ID to delete Returns: Confirmation of deletion.
freshbooks_list_paymentsList payments from FreshBooks with pagination. Returns a paginated list of payments. Args: - page: Page number (1-based, default: 1) - perPage: Number of payments per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Payment[], count, total, page, pages, hasMore } Markdown format: Formatted table of payments
freshbooks_update_paymentUpdate an existing payment. Args: - id: Payment ID to update - amount: New amount object - date: New payment date - type: New payment type - note: New notes Returns: The updated payment record.
freshbooks_delete_paymentDelete a payment from FreshBooks. Args: - id: Payment ID to delete Returns: Confirmation of deletion.
freshbooks_list_projectsList projects from FreshBooks with pagination. Returns a paginated list of projects. Args: - page: Page number (1-based, default: 1) - perPage: Number of projects per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Project[], count, total, page, pages, hasMore } Markdown format: Formatted table of projects
freshbooks_get_projectGet a single project by ID. Args: - id: The project ID - format: Response format ('json' or 'markdown') Returns: The project record with all available fields.
freshbooks_create_projectCreate a new project in FreshBooks. Args: - title: Project title (required) - description: Project description - clientId: Associated client ID - dueDate: Due date in YYYY-MM-DD format - budget: Budget amount - rate: Hourly rate - projectType: Type of project - fixedPrice: Fixed price for the project - billingMethod: Billing method - internal: Whether this is an internal project Returns: The created project record.
freshbooks_update_projectUpdate an existing project. Args: - id: Project ID to update - title: New title - description: New description - clientId: New client ID - dueDate: New due date - budget: New budget - rate: New hourly rate - projectType: New project type - fixedPrice: New fixed price - billingMethod: New billing method - internal: Update internal status - complete: Mark project as complete Returns: The updated project record.
freshbooks_delete_projectDelete a project from FreshBooks. Args: - id: Project ID to delete Returns: Confirmation of deletion.
freshbooks_list_servicesList services/task types from FreshBooks with pagination. Services are used to categorize time entries (e.g., "Development", "Design", "Meetings"). Args: - page: Page number (1-based, default: 1) - perPage: Number of services per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Service[], count, total, page, pages, hasMore } Markdown format: Formatted table of services
freshbooks_get_serviceGet a single service by ID. Args: - id: The service ID - format: Response format ('json' or 'markdown') Returns: The service record with all available fields.
freshbooks_create_serviceCreate a new service/task type in FreshBooks. Args: - name: Service name (required) - billable: Whether time tracked with this service is billable by default - projectDefault: Whether this service is added to new projects by default Returns: The created service record.
freshbooks_list_staffList staff members from FreshBooks with pagination. Returns a paginated list of staff/team members in the account. Args: - page: Page number (1-based, default: 1) - perPage: Number of staff per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Staff[], count, total, page, pages, hasMore } Markdown format: Formatted table of staff members
freshbooks_get_staffGet a single staff member by ID. Args: - id: The staff member ID - format: Response format ('json' or 'markdown') Returns: The staff record with all available fields.
freshbooks_get_current_userGet the current authenticated user's information. Returns: The current user's profile including identity and business memberships.
freshbooks_test_connectionTest the connection to FreshBooks API. Verifies that the access token and account ID are valid. Returns: Connection status and current user information if successful.
freshbooks_list_taxesList taxes from FreshBooks with pagination. Returns a paginated list of tax rates that can be applied to invoices. Args: - page: Page number (1-based, default: 1) - perPage: Number of taxes per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: Tax[], count, total, page, pages, hasMore } Markdown format: Formatted table of taxes
freshbooks_get_taxGet a single tax by ID. Args: - id: The tax ID - format: Response format ('json' or 'markdown') Returns: The tax record with all available fields.
freshbooks_create_taxCreate a new tax rate in FreshBooks. Args: - name: Tax name (required, e.g., "GST", "VAT") - amount: Tax percentage (required, e.g., 5 for 5%) - number: Tax registration number - compound: Whether this tax is compounded on other taxes Returns: The created tax record.
freshbooks_update_taxUpdate an existing tax rate. Args: - id: Tax ID to update - name: New tax name - amount: New tax percentage - number: New tax registration number - compound: Update compound setting Returns: The updated tax record.
freshbooks_delete_taxDelete a tax rate from FreshBooks. Args: - id: Tax ID to delete Returns: Confirmation of deletion.
freshbooks_list_time_entriesList time entries from FreshBooks with pagination. Returns a paginated list of time entries. Args: - page: Page number (1-based, default: 1) - perPage: Number of entries per page (1-100, default: 20) - format: Response format ('json' or 'markdown') Returns: JSON format: { items: TimeEntry[], count, total, page, pages, hasMore } Markdown format: Formatted table of time entries
freshbooks_get_time_entryGet a single time entry by ID. Args: - id: The time entry ID - format: Response format ('json' or 'markdown') Returns: The time entry record with all available fields.
freshbooks_create_time_entryCreate a new time entry in FreshBooks. Args: - isLogged: Whether the time is logged (true) or a timer (false) (required) - duration: Duration in seconds (required) - startedAt: Start time in ISO format (required) - note: Description of work done - clientId: Associated client ID - projectId: Associated project ID - serviceId: Service/task type ID - internal: Whether this is internal time - billable: Whether this time is billable Returns: The created time entry record.
freshbooks_update_time_entryUpdate an existing time entry. Args: - id: Time entry ID to update - isLogged: Whether time is logged - duration: New duration in seconds - startedAt: New start time - note: New description - clientId: New client ID - projectId: New project ID - serviceId: New service ID - internal: Update internal status - billable: Update billable status Returns: The updated time entry record.
freshbooks_delete_time_entryDelete a time entry from FreshBooks. Args: - id: Time entry ID to delete Returns: Confirmation of deletion.
freshbooks_delete_invoice{
"id": true
}freshbooks_convert_estimate_to_invoice{
"id": true
}freshbooks_delete_estimate{
"id": true
}