Let your AI agent
do the billing.
Connect Claude, Cursor, OpenClaw, Hermes, or any MCP-compatible AI agent to Honest Invoice. Your agent creates and sends estimates from your associated Honest Invoice account — while you focus on the work. MCP access is available only on active Pro and Business plans, and every request is scoped to the account behind its dedicated API key.
Respond in seconds
Your AI agent generates a branded, itemized estimate and emails it the moment a lead appears. No human delay. No missed opportunities.
Works everywhere
Stdio transport for Claude, Cursor, OpenClaw, and Hermes. REST API for cloud agents, webhooks, and custom integrations.
AI-powered extraction
Drop in a plain-English job description. AI splits it into labor, materials, quantities, and realistic pricing automatically.
Setup guide
Connect your AI agent in under ten minutes. You need an active Pro or Business plan, a dedicated API key created in Settings, and either the hosted MCP endpoint, the REST API, or a local checkout of our reference MCP server.
Recommended: use hosted MCP or the REST API
Claude, Cursor, OpenClaw, Hermes, Windsurf, and every other MCP client can use the hosted Streamable HTTP endpoint or talk to our REST API directly — no source checkout required. The stdio MCP server is a reference implementation in our public repo for customers who want a self-contained process.
OpenClaw and Hermes are independent third-party products. Honest Invoice is not affiliated with or endorsed by either provider; follow each provider's current security and acceptable-use policies.
Hosted Streamable HTTP
For clients that cannot run a local stdio process
Point any MCP client that supports remote Streamable HTTP servers at https://honestinvoice.com/api/mcp. Send the dedicated API key as a Bearer token. This hosted endpoint is stateless, uses the same account-scoped tools as the local server, and does not require Node.js, a repository checkout, or local process permissions. The endpoint accepts only HTTPS deployments and does not grant CORS access to unapproved browser origins; non-browser clients should use their own secure secret storage.
{
"mcpServers": {
"honest-invoice": {
"url": "https://honestinvoice.com/api/mcp",
"headers": {
"Authorization": "Bearer hi_mcp_your-dedicated-key"
}
}
}
}Replace the placeholder key, save the server, and confirm it can list Honest Invoice tools. If your client asks for a transport, choose Streamable HTTP. Use a least-privilege key, keep the secret in the client's secret store, and rotate or revoke it if the host or workspace is no longer trusted.
Claude Desktop (stdio)
Anthropic Claude — local stdio MCP server
This path uses our open-source reference server. It requires cloning the honestinvoice-live repo locally. If you want a no-checkout setup, use the REST API via the curl examples further down.
- 1Clone the
honestinvoice-liverepo and runnpm install. - 2Open Settings → Developer → MCP Servers in Claude Desktop.
- 3Add a new server named honest-invoice. Set command to npx and args to tsx,src/mcp-server.ts. Point the working directory to the honestinvoice-live checkout.
- 4Add HONEST_INVOICE_API_KEY (your dedicated key) and APP_BASE_URL (
https://honestinvoice.com). Keep the key private and never commit it to source control. - 5Click Save. A green status means you are connected.
Cursor
Cursor IDE
- 1Open Settings → Features → MCP in Cursor.
- 2Add a new MCP server with the JSON config below. Replace the placeholder values with your actual credentials.
- 3Restart Cursor and check the MCP panel — Honest Invoice tools should appear.
{
"mcpServers": {
"honest-invoice": {
"command": "npx",
"args": ["tsx", "src/mcp-server.ts"],
"env": {
"HONEST_INVOICE_API_KEY": "hi_mcp_your-dedicated-key",
"APP_BASE_URL": "https://honestinvoice.com"
}
}
}
}OpenClaw
Gateway-hosted MCP client
- 1Open Settings → MCP in the OpenClaw Control UI, or edit
~/.openclaw/openclaw.json. - 2Add the JSON config below under mcp.servers. Replace the placeholder API key and ensure the OpenClaw gateway can run npx. For a remote server, use the Streamable HTTP config below instead.
- 3Verify the connection with openclaw mcp doctor honest-invoice --probe. Reload or restart the gateway if the tools do not appear. For remote HTTP setup, set the transport to streamable-http and use the hosted endpoint above.
{
"mcp": {
"servers": {
"honest-invoice": {
"command": "npx",
"args": ["tsx", "src/mcp-server.ts"],
"env": {
"HONEST_INVOICE_API_KEY": "hi_mcp_your-dedicated-key",
"APP_BASE_URL": "https://honestinvoice.com"
},
"enabled": true
}
}
}
}{
"mcp": {
"servers": {
"honest-invoice": {
"url": "https://honestinvoice.com/api/mcp",
"transport": "streamable-http",
"headers": {
"Authorization": "Bearer hi_mcp_your-dedicated-key"
},
"enabled": true
}
}
}
}Hermes Agent
Nous Research MCP client
- 1Edit
~/.hermes/config.yamlor run hermes mcp to manage MCP servers interactively. For a remote setup, use the hosted Streamable HTTP config above with a URL-based server entry. - 2Add the YAML config below under mcp_servers. Replace the placeholder API key and keep this file private. For a remote server, use the Streamable HTTP config below instead.
- 3Start Hermes with hermes chat. After changing the config, use /reload-mcp to rediscover the Honest Invoice tools.
mcp_servers:
honest-invoice:
command: "npx"
args: ["tsx", "src/mcp-server.ts"]
env:
HONEST_INVOICE_API_KEY: "hi_mcp_your-dedicated-key"
APP_BASE_URL: "https://honestinvoice.com"
enabled: truemcp_servers:
honest-invoice:
url: "https://honestinvoice.com/api/mcp"
headers:
Authorization: "Bearer hi_mcp_your-dedicated-key"
enabled: trueCreate a dedicated API key
Create a dedicated API key in your Honest Invoice Settings. Never copy a browser session token into an agent or cron configuration: session tokens expire and can expose more than the integration needs. API keys are hashed, account-scoped, and revocable.
API reference
The hosted MCP endpoint and API accept dedicated API keys via the Authorization: Bearer header. Use HTTPS only, never place a key in a URL, and never expose it in client-side code or logs. Dedicated keys should be limited to the scopes the agent needs, rotated periodically, and revoked immediately after suspected compromise. An active Pro or Business plan is required, and every request is limited to the account associated with its credential.
curl -X POST https://honestinvoice.com/api/mcp/documents \
-H "Authorization: Bearer hi_mcp_YOUR_DEDICATED_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "estimate",
"client_name": "Jane Smith",
"client_email": "jane@email.com",
"tax_rate": 7.25,
"currency": "USD",
"items": [
{"description": "3-ton Condenser Unit", "quantity": 1, "rate_cents": 250000},
{"description": "Labor (6 hours)", "quantity": 6, "rate_cents": 12500}
]
}'| Tool | Method | Endpoint | Description |
|---|---|---|---|
create_estimate | POST | /api/mcp/documents | Pro and Business only. Create an estimate with line items, client details, taxes, and an optional job description for the authenticated account. |
create_invoice | POST | /api/mcp/documents | Pro and Business only. Create an invoice with the same structure for the authenticated account. |
list_documents | GET | /api/mcp/documents | Pro and Business only. List the authenticated account's invoices and estimates with filtering. |
update_document | PATCH | /api/mcp/documents | Pro and Business only. Update account-owned invoices or estimates and their line items. Agents cannot delete records. |
list_clients | GET | /api/mcp/clients | Pro and Business only. List account-owned clients. |
list_leads | GET | /api/mcp/leads | Pro and Business only. List account-owned leads and response status. |
update_lead_status | PATCH | /api/mcp/leads | Pro and Business only. Mark an account lead won or lost without deleting it. |
get_document_activity | GET | /api/mcp/documents/activity | Pro and Business only. Read the activity history for an account-owned document. |
send_document | POST | /api/mcp/documents/send | Pro and Business only. Email an estimate or invoice from the authenticated account to its client. |
extract_line_items | POST | /api/mcp/documents/extract | Use AI to break a plain-English job description into itemized labor and materials. Pro and Business only. |
process_lead | POST | /api/mcp/leads/webhook | Pro and Business only. Process a lead, create an estimate for the authenticated account, and optionally email it. |
scrape_leads | POST | /api/mcp/leads/scrape | Scrape Craigslist, Nextdoor, or Facebook for new leads and auto-create estimates with AI. Business plan required. |
Cron job setup
Compliance notice
Automated scraping and outbound emailing to scraped contacts can violate the Terms of Service of Craigslist, Nextdoor, Facebook, and applicable anti-spam law (CAN-SPAM, CASL, GDPR). You are responsible for complying with each platform's rules and with local cold-outreach law before enabling this cron. We strongly recommend keeping auto_send set to false so you review every estimate before it goes out. This feature is provided as-is; we're not your lawyer.
To scrape leads automatically on a schedule, configure an external cron service to call the POST /api/mcp/leads/scrape endpoint every 5-15 minutes. This runs the scrapers, posts each found lead to the webhook, and (with auto_send: false) creates draft estimates for your review. Business plan required.
cron-job.org setup
- 1. Create a free account at cron-job.org
- 2. Set URL to
https://honestinvoice.com/api/mcp/leads/scrape - 3. Add header:
Authorization: Bearer hi_mcp_YOUR_DEDICATED_KEY - 4. Set schedule to every 15 minutes
- 5. Set request body (JSON): sources=["craigslist"], cl_city=atlanta, cl_category=hva, keywords=HVAC repair
- 6. Save and enable — leads flow into your dashboard as draft estimates for review (set auto_send to true in the request body only if you have confirmed compliance with the target platform's ToS)
Lead intake webhook
The /api/mcp/leads/webhook endpoint receives leads (from your own scraping service, marketplace, or CRM) and creates an AI-extracted estimate. With auto_send: false the estimate lands in your dashboard for review; flip it to true only after you have verified your scraping and outreach comply with the source platform's Terms and applicable anti-spam law.
# Scrape a lead and create a draft estimate (manual review recommended)
# Set auto_send: false to keep the estimate in your dashboard until you approve it.
curl -X POST https://honestinvoice.com/api/mcp/leads/webhook \
-H "Authorization: Bearer hi_mcp..._KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Need HVAC condenser replaced",
"description": "3-ton Lennox, 6 hours labor, R-410A refrigerant",
"location": "Atlanta, GA",
"contact_email": "customer@example.com",
"contact_phone": "+155****4567",
"source": "craigslist",
"tax_rate": 7.25,
"auto_send": false
}'Plan limits
| Feature | Free | Pro | Business |
|---|---|---|---|
| Invoices / month | 5 | Unlimited | Unlimited |
| MCP access | — | Yes | Yes |
| AI extraction | — | Yes | Yes |
| Email sending | — | Yes | Yes |
| Payment links | — | Yes | Yes |
MCP access, agent-created estimates, and agent-sent documents require an active Pro or Business plan. Every agent request acts on behalf of the account tied to its credential.
Video walkthrough
Watch a complete setup from scratch — creating a dedicated API key, configuring Claude Desktop, and sending your first AI-generated estimate in under five minutes.
Video walkthrough coming soon.
In the meantime, follow the setup guide above or read the blog post.
Your AI agent is waiting.
Connect in under ten minutes with an active Pro or Business plan.