Skip to main content
Glama

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.

Ownership verified
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

A3.5/5.0

Scored across 56 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness3/5

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
Vendor relationship
Unknown
Trust center
Unknown
Restrictions
Unknown

Available Tools

56 tools
adjust_task_timeAdd or remove tracked timeA
Destructive
Inspect

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 eventA
DestructiveIdempotent
Inspect

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 customerA
DestructiveIdempotent
Inspect

Delete a customer record. Requires the customer ID. Customers with existing invoices or recurring invoices cannot be deleted.

Inputs: id (required).

delete_estimateDelete estimateA
DestructiveIdempotent
Inspect

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 expenseA
DestructiveIdempotent
Inspect

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 invoiceA
DestructiveIdempotent
Inspect

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 productC
DestructiveIdempotent
Inspect

Delete a product/service from the catalog. Requires the product ID.

Inputs: id (required).

delete_projectDelete projectA
DestructiveIdempotent
Inspect

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 taskA
DestructiveIdempotent
Inspect

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 detailsA
Read-onlyIdempotent
Inspect

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 detailsA
Read-onlyIdempotent
Inspect

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 detailsA
Read-onlyIdempotent
Inspect

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 detailsA
Read-onlyIdempotent
Inspect

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 detailsA
Read-onlyIdempotent
Inspect

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 detailsA
Read-onlyIdempotent
Inspect

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 detailsA
Read-onlyIdempotent
Inspect

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 overviewA
Read-onlyIdempotent
Inspect

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 reportB
Read-onlyIdempotent
Inspect

Get new customers per period and the running total over a date range.

Inputs: dateTo (required), dateFrom (required), groupBy.

get_dateGet today's dateA
Read-onlyIdempotent
Inspect

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 linkA
Read-onlyIdempotent
Inspect

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 reportA
Read-onlyIdempotent
Inspect

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 reportA
Read-onlyIdempotent
Inspect

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 linkA
Read-onlyIdempotent
Inspect

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 reportA
Read-onlyIdempotent
Inspect

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 historyA
Read-onlyIdempotent
Inspect

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 calendarA
Read-onlyIdempotent
Inspect

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 customersB
Read-onlyIdempotent
Inspect

List customers for the current organization. Returns customers with optional filtering and sorting.

Inputs: page, search, sortBy, pageSize, +1 more.

list_employeesList employeesB
Read-onlyIdempotent
Inspect

List the organization's employees, for example to choose assignedToId for an invoice or estimate.

Inputs: page, search, sortBy, isActive, +3 more.

list_estimatesList estimatesA
Read-onlyIdempotent
Inspect

List estimates for the current organization. Returns latest estimates with optional filtering and sorting.

Inputs: page, search, sortBy, status, +2 more.

list_expensesList expensesB
Read-onlyIdempotent
Inspect

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 paymentsA
Read-onlyIdempotent
Inspect

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 invoicesB
Read-onlyIdempotent
Inspect

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 methodsA
Read-onlyIdempotent
Inspect

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 productsA
Read-onlyIdempotent
Inspect

List products/services for the current organization. Returns products with optional filtering and sorting.

Inputs: page, search, sortBy, isActive, +3 more.

list_projectsList projectsB
Read-onlyIdempotent
Inspect

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 timersA
Read-onlyIdempotent
Inspect

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 tasksB
Read-onlyIdempotent
Inspect

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 estimateA
Destructive
Inspect

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 invoiceA
Destructive
Inspect

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 eventA
Destructive
Inspect

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 customerB
Destructive
Inspect

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 estimateA
Destructive
Inspect

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 expenseA
Destructive
Inspect

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 invoiceA
Destructive
Inspect

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 productB
Destructive
Inspect

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 projectA
Destructive
Inspect

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 taskA
Destructive
Inspect

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

    • A
      license
      Not graded
      quality
      C
      maintenance
      Remote 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
    • A
      license
      A
      quality
      D
      maintenance
      Enables 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.
      16
      9 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources