billforward-mcp
The Billforward MCP server integrates Billforward's billing and subscription management API with LLMs, enabling read and write operations across accounts, subscriptions, invoices, payments, and product catalogs.
Search & Insights
search– Unified search across accounts, subscriptions, and invoices by email, ID, or keywordget-customer-summary– 360-degree customer dashboard combining account details, subscriptions, credit balances, and recent invoicesget-metadata-schema– Discover custom metadata fields in use across accounts, subscriptions, and invoices
Guidance & Auth
help– Overview of available tools and usage patternsget-me– Validate API credentials and view authenticated user/org info
Account Management
List, get by ID or email, create, and update customer accounts; list profiles; supports filtering by metadata and date range
Subscription Management
List, get details, create, and cancel subscriptions, with billing period date filters
Invoices & Payments
List and retrieve invoices (with line items, taxes, payment status), payments, and receipts; supports date-based filtering
Catalog & Pricing
List products and rate plans; get full rate plan details including pricing components and tiers
Security & Configuration
Configurable read-only mode (
BILLFORWARD_READ_ONLY) blocks mutation operations and returns instructional errors for LLMsConfigurable via environment variables: API tokens (sandbox/production), custom API URLs, result limits, and request timeouts
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@billforward-mcpget customer summary for john@example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Billforward MCP Server 🚀
A high-performance Model Context Protocol (MCP) server for integrating Billforward's robust billing and subscription management API with LLMs.
🛠 Features
Entity Discovery: Quickly list and inspect Accounts and Subscriptions.
Protocol Purity: Zero log leakage to
stdout, ensuring 100% reliable JSON-RPC communication.Security First: Built-in
BILLFORWARD_READ_ONLY=true(default) mode to protect your data with instructional LLM error rejections.Modern SDK: Uses the latest
@modelcontextprotocol/sdksignatures (registerTool).Fully Testable: Includes protocol compliance and unit tests via Vitest.
Related MCP server: QuickFile MCP Server
🔑 How to Get Your API Token
You need an API token to allow the MCP server to communicate with Billforward.
Log in to your Billforward environment.
Navigate to Setup > Personal > API Keys.
Create a new token and copy it.
Quick Links:
⚙️ Configuration
To run this server with npx (local or published):
{
"mcpServers": {
"billforward": {
"command": "npx",
"args": [
"-y",
"billforward-mcp"
],
"env": {
"BILLFORWARD_SANDBOX_ACCESS_TOKEN": "your_sandbox_token",
"BILLFORWARD_PRODUCTION_ACCESS_TOKEN": "your_production_token",
"BILLFORWARD_READ_ONLY": "true"
}
}
}
}Configure whichever environments you have — one or both. When both are set, the LLM must pass environment: "sandbox" or "production" on each call; with only one set it is used automatically.
Advanced Environment Variables
The server behaves differently depending on these configurations:
Variable | Default Value | Description |
| (none) | API token for the sandbox environment. |
| (none) | API token for the production environment. |
| (none) | Legacy single token. Still supported; maps to the environment named by |
|
| Legacy — only routes the legacy |
|
| When true, POST/PUT actions return instructional error messages to the LLM preventing data mutation. |
|
| Base URL used when environment is production. |
|
| Base URL used when environment is sandbox. |
|
| The default number of results parsed per paginated tool response. |
|
| The hard limit cap on how many records the LLM can ask for per tool call. |
|
| Fallback timeout in milliseconds before failing a stuck Axios request. |
🧰 Available Tools
� Search & Insights
search: Parallelized unified search across Accounts, Subscriptions, and Invoices using email, ID, or keyword.get-customer-summary: 360-degree dashboard of a customer (profile, subs, recent invoices, dunning status).get-metadata-schema: Analyzes metadata keys in use across Accounts, Subscriptions, and Invoices to help filter queries.
�📖 Guidance
help: Get an overview of available entities and usage patterns.get-me: Validate your connection and view profile metadata.
👥 Accounts
list-accounts: Fetch a paginated list of accounts (limit,offset,metadata,created_after/created_before).get-account: Retrieve full details for a specific UUID.get-account-by-email: Find an account quickly by its exact email address.
📝 Subscriptions
list-subscriptions: Fetch a paginated list of subscriptions (limit,offset,period_start_after/period_start_before— Billforward has no native filter on subscription creation date, so this filters by billing period start instead).get-subscription: Retrieve full details for a specific UUID.
🧾 Invoices & Payments
list-invoices/get-invoice: Fetch invoices and draft details.list-invoicessupportsperiod_start_after/period_start_before(same caveat as subscriptions — no native created-date filter exists). Unlike accounts/subscriptions, Billforward doesn't embed invoicemetadatain the base payload —get-invoicealways fetches it from the dedicated metadata sub-resource;list-invoicesfetches it per-invoice only whenincludeMetadata=trueis passed (adds one extra API call per invoice, so keeplimitsmall).list-payments/get-payment/list-receipts: Fetch payments, a single payment by ID (including the offline payment justification text in itsdescriptionfield), and receipts.created_after/created_beforeare supported on the list tools but Billforward has no native date filter on these endpoints, so matches are filtered client-side after fetching sorted bycreated.
💳 Pricing & Catalog
list-products: List the main product lines.list-product-rate-plans: List specific rate plans (the entities that accounts subscribe to).
🛡 Security
Enable Read-Only Mode by ensuring the environment variable BILLFORWARD_READ_ONLY=true is set (it is true by default for safety).
If the LLM attempts to use tools like create-account or update-subscription while Read-Only is active, the operation will be blocked, and the LLM will receive a descriptive error instructing it to inform you that modifications are disabled.
🧪 Development
Build
pnpm run buildTest
pnpm testIncludes a special protocol.test.ts to ensure no third-party package ever leaks logs to the MCP stream again.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/GregoriSoria/billforward-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server