PineBill
Server Details
Official MCP server for PineBill, invoicing and business management software for freelancers and small businesses. Sign in with OAuth and choose view-only or view-and-edit access. Then you can create, update, and email invoices and estimates, get PDF download links, manage customers, products, expenses, projects, and tasks, start and stop task timers, read and book calendar events, and pull revenue, invoice aging, and expense reports. It has 56 tools, all annotated as read-only or destructive.
- Status
- Not tested
- Uptime
- 0.0% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- PineBill
TDQS
Scored across 56 tools
Entity CRUD tools are cleanly partitioned per resource (customer, invoice, estimate, expense, product, project, task), and the time-tracking tools (adjust_task_time, control_task_timer, list_running_timers, get_task_time_history) have clearly distinct roles. Minor overlap exists between the reporting tools (get_business_overview, get_revenue_report, get_invoice_aging, get_customer_growth) and between fetch_invoice and get_invoice_pdf_url, since a fetch appears to return PDF data as well, but descriptions differentiate them adequately.
Almost everything follows a verb_noun snake_case pattern (list_/fetch_/create_/update_/delete_/get_/send_). The only wrinkle is the systematic split between fetch_* for single-entity detail reads and get_* for derived data and PDF links, which is defensible but requires the agent to learn two read verbs. A few names are slightly off-pattern (control_task_timer, adjust_task_time), but still readable and consistent in style.
56 tools is heavy, but the server covers a broad business-management surface (seven CRUD entities plus time tracking, calendar, payments, and reporting), so most tools genuinely correspond to a distinct operation. Still, the surface is large enough that an agent must navigate long lists, and the five reporting tools plus PDF-link tools add weight that could be consolidated.
CRUD coverage is complete for the core entities, and calendar and time tracking have full lifecycles. However, for a billing platform the payments area is read-only (list_invoice_payments, list_payment_methods) with no tool to record a payment, meaning 'mark this invoice paid' must be done indirectly via update_invoice status. There is also no employee management or recurring-invoice support, which are notable gaps.
Publisher details
- Operator
- PineBill · Publisher source
- Operator website
- https://www.pinebill.app/
- Vendor relationship
- Unknown
- Documentation
- https://www.pinebill.app/docs/mcp
- Trust center
- Unknown
- Restrictions
- Unknown
Available Tools
56 toolsadjust_task_timeAdd or remove tracked timeADestructiveInspect
Add or remove tracked time on a task by hand, for work done without the timer or to correct a mistake. Time can't drop below zero.
Inputs: taskId (required), minutes (required), operation (required), note.
control_task_timerStart, pause, or stop a task timerAInspect
Start, pause, resume, or stop the time-tracking timer on a task. Pausing and stopping both add the elapsed time to the task's tracked total; use pause for a break and stop when the work is done. Use list_tasks to find the task ID, and list_running_timers to see which timers are already running.
Inputs: action (required), taskId (required).
create_calendar_eventCreate calendar eventAInspect
Create a calendar event, such as a client meeting or a reminder. Times without an offset are in the organization's timezone. For an all-day event set allDay and pass dates (YYYY-MM-DD); use the same date for start and end for a single day.
Inputs: title (required), endDate (required), startDate (required), color, +3 more.
create_customerCreate customerCInspect
Create a new customer record. Requires at least the customer name.
Inputs: name (required), email, phone, taxId, +7 more.
create_estimateCreate estimateAInspect
Create a new estimate (quote) for a customer. Look up the customer with list_customers first. For each line, use list_products and pass the productId when the product is in the catalog; otherwise omit productId and give name, price and quantity for a one-off line. Lines print in the order given. Options left out use the organization's invoice settings where one exists, otherwise none (no expiry date, discount, tax, shipping or footer). pdfUrl is a private, signed download link that expires at pdfUrlExpiresAt (1 hour). Give it to the user to open or download the PDF; don't put it in emails, notes, or anything that has to keep working.
Inputs: items (required), customerId (required), customerName (required), footer, +20 more.
create_expenseAdd expenseAInspect
Create a new expense record. Requires a title, amount, and date. Optionally link to a customer, invoice, or project using their IDs from the respective list tools.
Inputs: date (required), title (required), amount (required), notes, +7 more.
create_invoiceCreate invoiceAInspect
Create a new invoice for a customer. Look up the customer with list_customers first. For each line, use list_products and pass the productId when the product is in the catalog; otherwise omit productId and give name, price and quantity for a one-off line. Lines print in the order given. Options left out use the organization's invoice settings where one exists, otherwise none (no discount, tax, shipping or footer). pdfUrl is a private, signed download link that expires at pdfUrlExpiresAt (1 hour). Give it to the user to open or download the PDF; don't put it in emails, notes, or anything that has to keep working.
Inputs: items (required), customerId (required), customerName (required), footer, +22 more.
create_productCreate productAInspect
Create a new product/service in the catalog. Requires at least a name and price.
Inputs: name (required), price (required), model, isActive, +2 more.
create_projectCreate projectAInspect
Create a new project. Optionally link it to a customer or assign it to an employee. Use list_customers to resolve customer IDs if needed.
Inputs: name (required), budget, status, endDate, +5 more.
create_taskCreate taskAInspect
Create a task. Optionally link it to a project (list_projects), assign it to an employee (list_employees), and set an hourly rate for billing tracked time.
Inputs: title (required), notes, status, dueDate, +6 more.
delete_calendar_eventDelete calendar eventADestructiveIdempotentInspect
Delete a calendar event (type EVENT from list_calendar). Tasks, invoices, projects, and expenses shown on the calendar can't be deleted here.
Inputs: id (required).
delete_customerDelete customerADestructiveIdempotentInspect
Delete a customer record. Requires the customer ID. Customers with existing invoices or recurring invoices cannot be deleted.
Inputs: id (required).
delete_estimateDelete estimateADestructiveIdempotentInspect
Permanently delete an estimate and its PDF. Requires the estimate ID; use list_estimates to find it. This can't be undone, so confirm with the user first.
Inputs: id (required), customerName, estimateNumber.
delete_expenseDelete expenseADestructiveIdempotentInspect
Delete an expense permanently. This removes the expense and its receipt from storage. Requires the expense ID — use list_expenses to find it if needed. This action cannot be undone.
Inputs: id (required), title, vendor.
delete_invoiceDelete invoiceADestructiveIdempotentInspect
Permanently delete an invoice and its PDF. Requires the invoice ID; use list_invoices to find it. This can't be undone, so confirm with the user first.
Inputs: id (required), customerName, invoiceNumber.
delete_productDelete productCDestructiveIdempotentInspect
Delete a product/service from the catalog. Requires the product ID.
Inputs: id (required).
delete_projectDelete projectADestructiveIdempotentInspect
Delete a project permanently. Requires the project ID — use list_projects to find it if needed. This action cannot be undone.
Inputs: id (required), name, customerName.
delete_taskDelete taskADestructiveIdempotentInspect
Delete a task permanently. This removes the task and its assets from storage. Requires the task ID — use list_tasks to find it if needed. This action cannot be undone.
Inputs: id (required), title, projectName.
fetch_customerGet customer detailsARead-onlyIdempotentInspect
Fetch full details of a single customer by ID. Returns all customer data including name, email, phone, address, tax ID, website, and linked invoices. Use this before updating a customer to get current state, or when the user asks about a specific customer's details.
Inputs: id (required).
fetch_estimateGet estimate detailsARead-onlyIdempotentInspect
Fetch full details of a single estimate by ID. Returns all estimate data including items, customer, custom fields, status, dates, and calculations. Use this before updating an estimate to get current state, or when the user asks about a specific estimate's details.
Inputs: id (required).
fetch_expenseGet expense detailsARead-onlyIdempotentInspect
Fetch full details of a single expense by ID. Returns all expense data including amount, category, vendor, notes, linked customer, invoice, project, and receipt info. Use this before updating an expense to get current state, or when the user asks about a specific expense's details.
Inputs: id (required).
fetch_invoiceGet invoice detailsARead-onlyIdempotentInspect
Fetch full details of a single invoice by ID. Returns all invoice data including items, customer, payment methods, custom fields, status, dates, and calculations. Use this before updating an invoice to get current state, or when the user asks about a specific invoice's details.
Inputs: id (required).
fetch_productGet product detailsARead-onlyIdempotentInspect
Fetch full details of a single product by ID. Returns all product data including name, model, price, description, category, custom properties, and usage in invoices. Use this before updating a product to get current state, or when the user asks about a specific product's details.
Inputs: id (required).
fetch_projectGet project detailsARead-onlyIdempotentInspect
Fetch full details of a single project by ID. Returns all project data including description, status, budget, dates, customer, assignee, linked tasks, invoices, estimates, and expenses. Use this before updating a project to get current state, or when the user asks about a specific project's details.
Inputs: id (required).
fetch_taskGet task detailsARead-onlyIdempotentInspect
Fetch full details of a single task by ID. Returns all task data including description, status, dates, time tracking, project, assignee, and timer sessions. Use this before updating a task to get current state, or when the user asks about a specific task's details.
Inputs: id (required).
get_business_overviewBusiness overviewARead-onlyIdempotentInspect
Get a quick business overview: invoice totals, revenue this month vs last month, outstanding balance, new customers, overdue invoices, and the invoice status breakdown.
Inputs: no named parameters.
get_customer_growthCustomer growth reportBRead-onlyIdempotentInspect
Get new customers per period and the running total over a date range.
Inputs: dateTo (required), dateFrom (required), groupBy.
get_dateGet today's dateARead-onlyIdempotentInspect
Get the current date, time, timezone, and useful relative dates (e.g. start/end of week, month, quarter) in the organization's timezone. Call this when you need to know today's date, calculate due dates, or determine if something is overdue.
Inputs: no named parameters.
get_estimate_pdf_urlGet estimate PDF linkARead-onlyIdempotentInspect
Get a fresh download link for an estimate's PDF. Use it when the user wants to open, view, or download an estimate, or when an earlier link has expired. Find the estimate ID with list_estimates first. pdfUrl is a private, signed download link that expires at pdfUrlExpiresAt (1 hour). Give it to the user to open or download the PDF; don't put it in emails, notes, or anything that has to keep working.
Inputs: id (required).
get_expense_reportExpense reportARead-onlyIdempotentInspect
Get total spend and expense count per period over a date range, in the organization's default currency. Available on the Pro plan and above; on other plans it explains that the report isn't included.
Inputs: dateTo (required), dateFrom (required), groupBy.
get_invoice_agingInvoice aging reportARead-onlyIdempotentInspect
Get unpaid invoices grouped by how overdue they are (current, 1-30, 31-60, 61-90, 90+ days), with count and amount per currency. Available on the Pro plan and above; on other plans it explains that the report isn't included.
Inputs: no named parameters.
get_invoice_pdf_urlGet invoice PDF linkARead-onlyIdempotentInspect
Get a fresh download link for an invoice's PDF. Use it when the user wants to open, view, or download an invoice, or when an earlier link has expired. Find the invoice ID with list_invoices first. pdfUrl is a private, signed download link that expires at pdfUrlExpiresAt (1 hour). Give it to the user to open or download the PDF; don't put it in emails, notes, or anything that has to keep working.
Inputs: id (required).
get_revenue_reportRevenue reportARead-onlyIdempotentInspect
Get paid-invoice revenue over a date range, grouped by day, week, month, quarter, or year and broken down by currency.
Inputs: dateTo (required), dateFrom (required), groupBy.
get_task_time_historyGet task time historyARead-onlyIdempotentInspect
Get a task's time-tracking history: each start, pause, resume, stop, and manual change, who made it, and how long each stretch lasted.
Inputs: taskId (required), limit.
list_calendarList calendarARead-onlyIdempotentInspect
List what's on the calendar between two dates: calendar events plus task due dates, invoice due dates, project deadlines, and expense dates. Times are in the organization's timezone (all-day items are dates). Use get_date first for relative ranges like 'this week'. Only items of type EVENT can be changed with the calendar event tools.
Inputs: to (required), from (required), types.
list_customersList customersBRead-onlyIdempotentInspect
List customers for the current organization. Returns customers with optional filtering and sorting.
Inputs: page, search, sortBy, pageSize, +1 more.
list_employeesList employeesBRead-onlyIdempotentInspect
List the organization's employees, for example to choose assignedToId for an invoice or estimate.
Inputs: page, search, sortBy, isActive, +3 more.
list_estimatesList estimatesARead-onlyIdempotentInspect
List estimates for the current organization. Returns latest estimates with optional filtering and sorting.
Inputs: page, search, sortBy, status, +2 more.
list_expensesList expensesBRead-onlyIdempotentInspect
List expenses for the current organization. Returns latest expenses with optional filtering and sorting.
Inputs: page, dateTo, search, sortBy, +6 more.
list_invoice_paymentsList invoice paymentsARead-onlyIdempotentInspect
List the payments recorded on one invoice: online payments through Stripe or PayPal (and their refunds, shown as negative amounts) and payments recorded by hand. Returns each payment's provider, amount, date and payer email, plus the total paid and the balance still due, and whether the invoice accepts online payments. Use it when the user asks whether, when or how an invoice was paid, how much is left, or about a refund. Read only.
Inputs: invoiceId (required).
list_invoicesList invoicesBRead-onlyIdempotentInspect
List invoices for the current organization. Returns latest invoices with optional filtering and sorting.
Inputs: page, search, sortBy, status, +2 more.
list_payment_methodsList payment methodsARead-onlyIdempotentInspect
List the organization's saved payment methods (name, type, and whether it's the default) to choose paymentMethodIds for an invoice. Account details aren't included.
Inputs: include.
list_productsList productsARead-onlyIdempotentInspect
List products/services for the current organization. Returns products with optional filtering and sorting.
Inputs: page, search, sortBy, isActive, +3 more.
list_projectsList projectsBRead-onlyIdempotentInspect
List the organization's projects, for example to choose projectId for an invoice or estimate.
Inputs: page, dateTo, search, sortBy, +6 more.
list_running_timersList running timersARead-onlyIdempotentInspect
List every task in the organization whose timer is running right now, with how long it has been running and the task's total tracked time.
Inputs: no named parameters.
list_tasksList tasksBRead-onlyIdempotentInspect
List tasks for the current organization. Returns tasks with optional filtering by status, project, assignee, and date range.
Inputs: page, dateTo, search, sortBy, +6 more.
send_estimate_emailEmail an estimateADestructiveInspect
Email an existing estimate (with its PDF) to the customer. Resolve the estimate ID first with list_estimates if needed. If recipientEmails is omitted, the customer's saved email is used. The email can't be recalled once sent, so confirm the estimate and recipients with the user first.
Inputs: estimateId (required), message, customerName, customerEmail, +2 more.
send_invoice_emailEmail an invoiceADestructiveInspect
Email an existing invoice (with its PDF) to the customer. Resolve the invoice ID first with list_invoices if needed. If recipientEmails is omitted, the customer's saved email is used. The email can't be recalled once sent, so confirm the invoice and recipients with the user first.
Inputs: invoiceId (required), message, customerName, customerEmail, +2 more.
update_calendar_eventUpdate calendar eventADestructiveInspect
Change a calendar event (type EVENT from list_calendar). Pass only the fields to change; pass null to clear the description, location, or color. Times without an offset are in the organization's timezone; on an all-day event pass dates (YYYY-MM-DD).
Inputs: id (required), color, title, allDay, +4 more.
update_customerUpdate customerBDestructiveInspect
Update an existing customer record. Requires the customer ID and at least one field to update.
Inputs: id (required), name, email, phone, +8 more.
update_estimateUpdate estimateADestructiveInspect
Update an existing estimate: status, lines, customer, dates, amounts, appearance and other fields. Find the estimate ID with list_estimates first, and resolve new customers or products with list_customers/list_products. Fields left out keep their current values. Passing items replaces every line with the given list, in that order. pdfUrl is a private, signed download link that expires at pdfUrlExpiresAt (1 hour). Give it to the user to open or download the PDF; don't put it in emails, notes, or anything that has to keep working.
Inputs: id (required), items, footer, status, +21 more.
update_expenseUpdate expenseADestructiveInspect
Update an existing expense. Use list_expenses to find the expense ID first. Pass only the fields that need to change.
Inputs: id (required), date, notes, title, +7 more.
update_invoiceUpdate invoiceADestructiveInspect
Update an existing invoice: status, paid date, lines, customer, dates, amounts, appearance and other fields. Find the invoice ID with list_invoices first, and resolve new customers or products with list_customers/list_products. Fields left out keep their current values. Passing items replaces every line with the given list, in that order. pdfUrl is a private, signed download link that expires at pdfUrlExpiresAt (1 hour). Give it to the user to open or download the PDF; don't put it in emails, notes, or anything that has to keep working.
Inputs: id (required), items, footer, status, +24 more.
update_productUpdate productBDestructiveInspect
Update an existing product/service. Requires the product ID and at least one field to update.
Inputs: id (required), name, model, price, +3 more.
update_projectUpdate projectADestructiveInspect
Update an existing project. Use list_projects to find the project ID first. Pass only the fields that need to change.
Inputs: id (required), name, budget, status, +6 more.
update_taskUpdate taskADestructiveInspect
Update an existing task. Use list_tasks to find the task ID first. Pass only the fields that need to change.
Inputs: id (required), notes, title, status, +8 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs112 npmMIT
- AlicenseAqualityDmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.169 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.