Billr MCP server

Invoicing your agent can draft and you approve

Billr is invoicing with a remote MCP server: your agent logs time and expenses, finds unbilled work and prepares draft invoices for your review. A read-and-draft connection cannot send them.

It is for developers, consultants and small agencies who already work in Claude Code, Codex or another MCP client and would rather bill from there than retype the month into an invoicing form. A draft stays a draft until it is sent, and a connection without the send permission cannot email a client at all.

What an agent can do

Billr is a full invoicing app: clients, invoices, estimates, saved items, time, expenses, payments and reports, with a dashboard you use directly. The MCP server exposes 53 tools over the same records, so whatever the agent creates is an ordinary Billr record you can open, edit or export.

In practice an agent can look up clients, log time with log_time and expenses with log_expense, list everything not yet billed with list_unbilled, draft invoices and estimates, convert an accepted estimate, check what a client still owes with get_payment_status, and summarise revenue. Agreed fixed-fee schedules and metered agent tasks have their own tools, covered in the task billing docs.

Every tool works inside the business the connection belongs to. Invoice creation returns a dashboard link, so the agent can hand you the draft for review.

How the workflow runs

  1. Connect an agent to one business

    Add the Billr MCP server to an MCP client that supports remote servers, then sign in or paste a key. You choose the business and the permissions the connection gets.

  2. Record work as it happens

    In the same session where the work was done, the agent calls log_time and log_expense. Entries land in your Billr time and expense lists, where you can correct them.

  3. Draft from unbilled work

    At billing time the agent calls list_unbilled, then create_invoice with the entry ids. Billr prices the lines from the recorded work and links each entry to the draft so it cannot be billed twice.

  4. You review and send

    The draft opens in your dashboard. Check the client, currency, lines and total, edit anything that is wrong, and send it yourself.

Example: from logged work to a reviewed draft

A fictional freelancer bills Larkspur Analytics at $140.00 an hour. The names, dates and invoice number are invented, and the tool results are summarised rather than quoted. The amounts are what Billr's own time math produces for these entries.

Fictional sequence of agent requests, tool calls and results
You askAgent callsResult
Log 2.5 hours on 2026-10-06 for Larkspur Analytics: reporting pipeline migration, at $140.00/hr.log_timeBillable time entry, $350.00
Log 1.75 hours on 2026-10-09 for Larkspur Analytics: dashboard query fixes, at $140.00/hr.log_timeBillable time entry, $245.00
Log the $38.00 staging database add-on for Larkspur Analytics.log_expenseBillable expense, $38.00
Draft Larkspur Analytics's invoice from their unbilled work. Do not send it.list_unbilled, then create_invoice with the three entry idsDraft INV-1203, $633.00, three linked lines and a dashboard link

Then the person takes over. They open INV-1203 in the dashboard, confirm it is addressed to the right client in the right currency, and check the three lines against what was agreed. If an entry is wrong, they fix it before sending. Sending is a separate step they take from the dashboard. Had the connection held the send permission, the agent could have called send_invoice instead, and that call emails the client as soon as it runs.

The Codex guide walks through the same kind of draft with the actual request and response fields.

Approval boundaries

What an agent may do is decided by the connection's permissions, not by how it is asked. Tools outside a connection's permissions are never offered to the agent, and each call is checked again when it runs, so a revoked or expired connection stops working at its next call. API keys pick one of the profiles below; a sign-in connection picks the same permissions on a consent screen, with read and draft on by default.

API key permission profiles and the tools each one allows
Permission profileToolsWhat it allows
Read only21 of 53Reads clients, invoices, time, expenses, payment status and revenue. Changes nothing.
Read and draft (recommended)46 of 53Adds logging time and expenses, editing clients and items, tracking agent tasks, and creating draft invoices and estimates. Cannot send, record payments or delete.
Billing: draft, send and record payments51 of 53Adds send_invoice and send_estimate, which email the client as soon as the tool runs, plus recording and correcting payments.
Full: billing and delete unbilled work53 of 53Adds deleting time entries and expenses that are not on an invoice yet.

A few rules hold whatever the permissions:

  • create_invoice and create_estimate only make drafts. Nothing reaches a client until someone sends it.
  • There is no MCP tool that deletes an invoice, an estimate or a client. The delete permission covers unbilled time entries and expenses only.
  • Rates and budgets for metered agent tasks are approved by a person in Billr, and a person approves the resulting invoice.
  • Every tool call is recorded by name and outcome under Agents, Audit. Arguments and secrets are not stored there.

Your MCP client may also ask you to approve individual tool calls. That prompt is a second check run by the client. It does not give the connection permissions it was not granted, and it is not a substitute for reviewing a draft. Key creation, expiry and revocation are covered in the API keys docs.

Hosted or self-hosted

The same application and MCP server run in both editions. The difference is who operates it and where the data lives.

Hosted at billr.cc

  • MCP endpoint https://mcp.billr.cc
  • We run the application, database, backups and upgrades.
  • One 14-day trial per account, from signup. After it, each business you keep billing from needs its own subscription, $19 per business, per month.
  • Tools that change data need an active trial or subscription for that business. Reading stays available, so you can still export what you recorded.

Self-hosted, open source

  • MCP endpoint at your installation's /api/mcp path
  • Runs against your own Supabase backend. You handle deployment, backups and updates.
  • No hosted account or subscription. Sending email and online payments use your own provider configuration.
  • Remote agents need the installation reachable over HTTPS.

The self-hosting FAQ covers what a self-hosted installation includes, and pricing compares the two editions. If you already invoice from Stripe, Stripe Invoicing or Billr covers when Stripe on its own is the better fit.

What it does not do

  • It does not collect provider costs on its own. For metered tasks, the agent reports a known cost with record_task_usage, and Billr stores it as reported, not independently verified. See billing clients for AI usage.
  • It does not schedule or send invoices by itself. An invoice is emailed only when someone sends it from the dashboard or a connection with the send permission calls send_invoice.
  • It does not guarantee every MCP client works. The client needs to support remote MCP servers over HTTP with sign-in or a bearer key. The connect docs give steps for specific clients, written against each vendor's documentation, and client menus change.
  • It does not check that a draft is correct for your contract. The agent can only bill what was recorded, at the rates recorded, which is why the review step matters.

Set it up

This page explains the product. Exact client setup lives in the docs and guides.

Try it on your own work

Hosted Billr starts with one 14-day trial per account, counted from signup, with no card needed to start. After that, each business you keep billing from needs a separate subscription at $19 per business, per month. Connect a read and draft key and ask for your first draft.

Start the 14-day trial

Reviewed against Billr's MCP tool definitions and permission checks.