Connect your agent
Billr exposes a remote MCP server at https://mcp.billr.cc. In most clients that URL is the only thing you paste.
Signing in shows a consent screen that asks which business the agent may work in and which permissions it gets, with read and write on by default and send, payments and delete optional. Every connection shows up under Agents → API Keys and can be revoked there at any time.
Clients that cannot sign in still work with a billr_sk_ key sent as a bearer token. Each guide below carries that fallback under “Use an API key instead”.
For what the connection can do once it is set up, and which permissions let an agent send, read the MCP server overview.
Set up per agent
Claude
What you need: A Claude account on any plan. Free accounts can add one custom connector. On Team and Enterprise only an Owner can add the connector, after which each member connects for themselves.
Open your connector list
In claude.ai or Claude Desktop, go to Customize, then Connectors. Team and Enterprise Owners add it from Organization settings, then Connectors.
Add a custom connector
Click the plus button, then "Add custom connector". Team and Enterprise Owners click "Add", hover "Custom" and select "Web".
Paste the Billr MCP URL
The URL is the only field you need. Leave Advanced settings empty: Billr registers Claude as a client on its own, so there is no client ID or secret to paste.
https://mcp.billr.ccClick Add, then Connect
Claude sends you to Billr to sign in and approve the connection. Pick the business and the permissions, then approve.
Switch Billr on in a chat
Use the plus button at the bottom of the chat, choose Connectors, and toggle Billr on for that conversation.
Then verify: Ask Claude: "List my Billr clients and tell me what is still unbilled." It reads only, so nothing is created or sent.
Checked against the vendor documentation on 2026-09-21. If their menus have moved since, follow their wording and keep the URL above.
Claude Code
What you need: Claude Code installed, and a terminal open in any project directory.
Add the server
Run this once. Add --scope user to make Billr available in every project instead of only this one.
claude mcp add --transport http billr https://mcp.billr.ccStart Claude Code and run /mcp
Pick billr from the list and choose to authenticate. Claude Code opens Billr in your browser.
/mcpApprove in the browser
Sign in to Billr, choose the business and the permissions, and approve. Then go back to your terminal.
Check it is connected
billr should be listed as connected.
claude mcp list
Then verify: Ask Claude Code: "List my Billr clients and tell me what is still unbilled." It reads only, so nothing is created or sent.
Use an API key instead
Create a key under Agents → API Keys, then pass it as a bearer token when you add the server. Replace YOUR_KEY with the key you copied.
Add the server with a key
claude mcp add --transport http billr https://mcp.billr.cc --header "Authorization: Bearer YOUR_KEY"
Checked against the vendor documentation on 2026-09-21. If their menus have moved since, follow their wording and keep the URL above.
Codex
What you need: The Codex CLI installed and signed in.
Add the server
codex mcp add billr --url https://mcp.billr.ccSign in
Codex opens Billr in your browser. Choose the business and the permissions, then approve.
codex mcp login billrCheck it is connected
billr should appear in the list. Inside the Codex TUI, /mcp shows the same thing.
codex mcp list
Then verify: Ask Codex: "List my Billr clients and tell me what is still unbilled." It reads only, so nothing is created or sent.
Use an API key instead
Create a key under Agents → API Keys and export it as BILLR_API_KEY in the shell that starts Codex, then add this table to ~/.codex/config.toml, or to .codex/config.toml for one project.
Configure a bearer token
[mcp_servers.billr] url = "https://mcp.billr.cc" bearer_token_env_var = "BILLR_API_KEY"
Checked against the vendor documentation on 2026-09-21. If their menus have moved since, follow their wording and keep the URL above.
Cursor
What you need: Cursor, and a project folder if you want Billr only in that project.
Create the config file
Use .cursor/mcp.json in the project root for one project, or ~/.cursor/mcp.json for every project.
Paste the server entry
A url entry is all Cursor needs. Cursor registers itself with Billr automatically, so there is no client ID to fill in.
{ "mcpServers": { "billr": { "url": "https://mcp.billr.cc" } } }Save the file and sign in
Billr appears in the MCP list on the Customize page. Cursor supports OAuth for servers that require it, so it opens Billr in your browser. Choose the business and the permissions, then approve.
Then verify: Ask Cursor: "List my Billr clients and tell me what is still unbilled." It reads only, so nothing is created or sent.
Use an API key instead
Create a key under Agents → API Keys and set BILLR_API_KEY in the environment Cursor starts from, then send it as a header. Cursor reads ${env:NAME} in header values, so the key never sits in the file.
Send the key as a header
{ "mcpServers": { "billr": { "url": "https://mcp.billr.cc", "headers": { "Authorization": "Bearer ${env:BILLR_API_KEY}" } } } }
Checked against the vendor documentation on 2026-09-21. If their menus have moved since, follow their wording and keep the URL above.
ChatGPT
What you need: A ChatGPT account with developer mode available. OpenAI documents the steps below but does not list which plans include developer mode, so check your own Settings first.
Turn on developer mode
In ChatGPT, open Settings, then "Security and login", and turn on Developer mode.
Open the plugin list
Go to ChatGPT Plugins and select the plus button.
Connect the Billr MCP URL
Paste the URL and connect the server in developer mode.
https://mcp.billr.ccSign in to Billr
ChatGPT runs an OAuth flow against Billr. Choose the business and the permissions, then approve. There is no API key option here: OAuth is the only way in.
Then verify: Ask ChatGPT: "List my Billr clients and tell me what is still unbilled." It reads only, so nothing is created or sent.
Checked against the vendor documentation on 2026-09-21. If their menus have moved since, follow their wording and keep the URL above.
Other / API key
What you need: Any client that can talk to a remote MCP server over streamable HTTP.
Add a remote HTTP MCP server with this URL
If the client supports MCP authorization, that is everything it needs. It discovers the Billr sign-in page from the URL and asks you to approve a business and a set of permissions.
https://mcp.billr.ccSign in when the client opens Billr
Choose the business and the permissions, then approve. The connection then shows up under Agents → API Keys.
If the client cannot sign in, use a key
Clients with no OAuth support can still connect with a bearer token. Open the panel below.
Then verify: Ask your agent: "List my Billr clients and tell me what is still unbilled." It reads only, so nothing is created or sent.
Use an API key instead
Create a key under Agents → API Keys, copy it once, and give the client the URL plus an Authorization header. A wrong or revoked key gets a 401 rather than an empty list, so a bad key never looks like an empty account.
URL and header
URL: https://mcp.billr.cc Authorization: Bearer YOUR_KEY
Worked examples with real output: Draft an invoice from Claude Code and Draft an invoice from Codex.
All 53 tools at a glance
Every tool is business-scoped to the connection that calls it. Mutating tools return the entity plus a link your agent can hand back to you: the client-facing invoice or estimate URL, the PDF, and the page in your dashboard.
Task billing
Track active work and reported usage under human-approved pricing.
list_billing_policiescreate_taskstart_taskheartbeat_taskpause_taskcomplete_taskrecord_task_usageget_task_billing_preview
Clients
Look up and maintain the client list.
list_clientsget_clientcreate_clientupdate_client
Invoices
Draft, edit, send, and settle invoices.
list_invoicesget_invoicecreate_invoiceupdate_draft_invoicesend_invoicerecord_payment
Estimates
Quote work up front, then turn an accepted quote into an invoice.
list_estimatesget_estimatecreate_estimateupdate_draft_estimatesend_estimateconvert_estimate_to_invoice
Engagements
Agreed totals billed off a schedule, with nothing sent automatically.
list_engagementsget_engagementlist_ready_to_billcreate_engagementupdate_engagementmark_milestone_completecomplete_engagementwaive_engagement_entryconvert_estimate_to_engagement
Saved items
The rate catalog invoices and estimates can bill from by name.
list_itemscreate_itemupdate_item
Time
Log and correct tracked time before it gets billed.
log_timelist_time_entriesupdate_time_entrydelete_time_entry
Expenses
Log and correct expenses, billable or not.
log_expenselist_expensesupdate_expensedelete_expense
Payments
Check what has been paid, what is still due, and correct or void a payment that was recorded wrong.
get_payment_statusupdate_paymentvoid_payment
Business and links
Business settings, revenue rollups, and shareable links.
get_profileget_businesslist_businessesrevenue_summaryget_invoice_linklist_unbilled
The tool reference lists every tool with the permission it needs, so you know what you are granting on the consent screen.
Check that it worked
Ask your agent for something read-only first. If the connection is right, this comes back with your own data and nothing is written:
List my Billr clients and tell me what is still unbilled.If the connection is missing or revoked, the server answers with a 401 rather than a silent empty list, so a revoked agent never looks like an empty account.
Where to go next
- Find unbilled work: read the grouped list, fix flagged rates, and draft the invoice from the entries themselves.
- Estimates and items: quote work up front, convert an accepted quote, and bill a saved rate by name.
- Getting paid: connect Stripe, test your checkout, and read payment status from an agent.
- Recipes: copy-paste patterns for a CLAUDE.md or AGENTS.md file.
The self-hosted application, including this MCP server and the agent toolkit, is public on GitHub under Apache-2.0. Source in the repository is not a marketplace listing in any client: connect with the steps above. See the hosting details for what runs where.
Open source