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
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.
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.
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.
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.
| You ask | Agent calls | Result |
|---|---|---|
| Log 2.5 hours on 2026-10-06 for Larkspur Analytics: reporting pipeline migration, at $140.00/hr. | log_time | Billable time entry, $350.00 |
| Log 1.75 hours on 2026-10-09 for Larkspur Analytics: dashboard query fixes, at $140.00/hr. | log_time | Billable time entry, $245.00 |
| Log the $38.00 staging database add-on for Larkspur Analytics. | log_expense | Billable 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 ids | Draft 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.
| Permission profile | Tools | What it allows |
|---|---|---|
| Read only | 21 of 53 | Reads clients, invoices, time, expenses, payment status and revenue. Changes nothing. |
| Read and draft (recommended) | 46 of 53 | Adds 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 payments | 51 of 53 | Adds 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 work | 53 of 53 | Adds deleting time entries and expenses that are not on an invoice yet. |
A few rules hold whatever the permissions:
create_invoiceandcreate_estimateonly 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/mcppath - 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.
- Connect your agentThe server URL, sign-in and key fallback for Claude, Claude Code, Codex, Cursor, ChatGPT and other MCP clients.Read it
- Draft an invoice from Claude CodeSetup with the key kept out of your shell history, a read-only first check, then a draft.Read it
- Draft an invoice from CodexThe config.toml entry and a month-end draft from logged work.Read it
- Find unbilled workRead what is not on an invoice yet, fix entries without a rate, then bill them.Read it
- Bill clients for AI usageAgreed pricing, reported provider cost and markup, with a worked invoice.Read it
- Tool referenceAll 53 tools, grouped by job, with the permission each one needs.Read it
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 trialReviewed against Billr's MCP tool definitions and permission checks.