Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
MCP server for QuickBooks Online — manage invoices, customers, expenses, and reports via AI LedgerLink MCP An MCP server that connects AI assistants to QuickBooks Online. Manage invoices, customers, expenses, and reports through natural conversation. "Show me all unpaid invoices" · "Create an invoice for Acme Corp for $5,000" · "What's my P&L for last quarter?" What It Does LedgerLink MCP gives AI assistants (Claude Desktop, Cursor, etc.) direct access to your QuickBooks Online data through the $1. Instead Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Freshness
Last checked 2/25/2026
Best For
ledgerlink-mcp is best for mcp, quickbooks, accounting workflows where MCP compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB MCP, runtime-metrics, public facts pack
MCP server for QuickBooks Online — manage invoices, customers, expenses, and reports via AI LedgerLink MCP An MCP server that connects AI assistants to QuickBooks Online. Manage invoices, customers, expenses, and reports through natural conversation. "Show me all unpaid invoices" · "Create an invoice for Acme Corp for $5,000" · "What's my P&L for last quarter?" What It Does LedgerLink MCP gives AI assistants (Claude Desktop, Cursor, etc.) direct access to your QuickBooks Online data through the $1. Instead
Public facts
4
Change events
1
Artifacts
0
Freshness
Feb 25, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Trust score
Unknown
Compatibility
MCP
Freshness
Feb 25, 2026
Vendor
Bpmj Martin
Artifacts
0
Benchmarks
0
Last release
0.1.0
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Setup snapshot
git clone https://github.com/bpmj-martin/ledgerlink-mcp.gitSetup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Bpmj Martin
Protocol compatibility
MCP
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
5
Snippets
0
Languages
typescript
bash
# Clone and install git clone https://github.com/YOUR_USERNAME/ledgerlink-mcp.git cd ledgerlink-mcp npm install # Authenticate with QuickBooks (opens browser) QB_CLIENT_ID=your_id QB_CLIENT_SECRET=your_secret npx tsx bin/cli.ts auth
json
{
"mcpServers": {
"ledgerlink": {
"command": "npx",
"args": ["tsx", "/path/to/ledgerlink-mcp/src/index.ts"],
"env": {
"QB_CLIENT_ID": "your_client_id",
"QB_CLIENT_SECRET": "your_client_secret",
"QB_ENVIRONMENT": "sandbox"
}
}
}
}text
You: "Show me unpaid invoices" ↓ Claude Desktop → LedgerLink MCP (stdio) → QuickBooks API ↓ Claude: "You have 4 unpaid invoices totaling $3,200..."
bash
# Install dependencies npm install # Run in development mode QB_CLIENT_ID=xxx QB_CLIENT_SECRET=xxx npx tsx src/index.ts # Test with MCP Inspector QB_CLIENT_ID=xxx QB_CLIENT_SECRET=xxx npx @modelcontextprotocol/inspector npx tsx src/index.ts # Type check npx tsc --noEmit # Build for distribution npm run build # Run tests npm test
text
src/
├── index.ts # Entry point — wires everything together
├── auth/
│ ├── oauth.ts # OAuth 2.0 flow (local callback server)
│ └── token-store.ts # Token persistence (~/.ledgerlink/)
├── quickbooks/
│ ├── client.ts # HTTP client (auth, retry, rate limiting)
│ ├── types.ts # TypeScript types for QB entities
│ ├── invoices.ts # Invoice API operations
│ ├── customers.ts # Customer API operations
│ └── ... # (10 entity modules total)
├── tools/
│ ├── invoice-tools.ts # MCP tool registrations for invoices
│ ├── customer-tools.ts # MCP tool registrations for customers
│ └── ... # (10 tool modules total)
├── resources/
│ └── index.ts # MCP read-only resources
└── utils/
├── rate-limiter.ts # Sliding window (450 req/min)
├── query-builder.ts # QB query builder with sanitization
└── formatters.ts # Report response formattingFull documentation captured from public sources, including the complete README when available.
Docs source
GITHUB MCP
Editorial quality
ready
MCP server for QuickBooks Online — manage invoices, customers, expenses, and reports via AI LedgerLink MCP An MCP server that connects AI assistants to QuickBooks Online. Manage invoices, customers, expenses, and reports through natural conversation. "Show me all unpaid invoices" · "Create an invoice for Acme Corp for $5,000" · "What's my P&L for last quarter?" What It Does LedgerLink MCP gives AI assistants (Claude Desktop, Cursor, etc.) direct access to your QuickBooks Online data through the $1. Instead
An MCP server that connects AI assistants to QuickBooks Online. Manage invoices, customers, expenses, and reports through natural conversation.
"Show me all unpaid invoices" · "Create an invoice for Acme Corp for $5,000" · "What's my P&L for last quarter?"
LedgerLink MCP gives AI assistants (Claude Desktop, Cursor, etc.) direct access to your QuickBooks Online data through the Model Context Protocol. Instead of clicking through the QuickBooks UI, you talk to your AI assistant in plain English.
32 tools across 10 QuickBooks entities:
| Category | Tools | |----------|-------| | Invoices | List, get, create, send, void | | Customers | List, get, create, update | | Bills | List, get, create | | Payments | List, record | | Expenses | List, get, create | | Reports | Profit & Loss, Balance Sheet, Cash Flow, AR Aging, AP Aging | | Accounts | List, get, create (Chart of Accounts) | | Vendors | List, get, create | | Items | List, get, create (Products & Services) | | Company | Get company info |
http://localhost:3847/callback as a Redirect URI (under Settings)# Clone and install
git clone https://github.com/YOUR_USERNAME/ledgerlink-mcp.git
cd ledgerlink-mcp
npm install
# Authenticate with QuickBooks (opens browser)
QB_CLIENT_ID=your_id QB_CLIENT_SECRET=your_secret npx tsx bin/cli.ts auth
A browser window opens → log in to QuickBooks → authorize → tokens are saved to ~/.ledgerlink/tokens.json.
Edit your Claude Desktop config:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ledgerlink": {
"command": "npx",
"args": ["tsx", "/path/to/ledgerlink-mcp/src/index.ts"],
"env": {
"QB_CLIENT_ID": "your_client_id",
"QB_CLIENT_SECRET": "your_client_secret",
"QB_ENVIRONMENT": "sandbox"
}
}
}
}
Restart Claude Desktop. You'll see the tools icon — start talking to your books.
You: "Show me unpaid invoices"
↓
Claude Desktop → LedgerLink MCP (stdio) → QuickBooks API
↓
Claude: "You have 4 unpaid invoices totaling $3,200..."
LedgerLink runs as a local process. Claude Desktop spawns it, communicates over stdio (stdin/stdout), and your QuickBooks data never leaves your machine.
| Variable | Required | Description |
|----------|----------|-------------|
| QB_CLIENT_ID | Yes | From Intuit developer portal |
| QB_CLIENT_SECRET | Yes | From Intuit developer portal |
| QB_REDIRECT_URI | No | Default: http://localhost:3847/callback |
| QB_ENVIRONMENT | No | sandbox (default) or production |
Tokens are stored in ~/.ledgerlink/tokens.json with owner-only permissions (chmod 600). Access tokens auto-refresh when expired (1-hour lifetime, 100-day refresh token).
list_invoices — Filter by status (Unpaid/Paid/Overdue), customer, date rangeget_invoice — Full invoice details by IDcreate_invoice — Create with customer, line items, due date, memosend_invoice — Email an invoice to the customervoid_invoice — Void an invoice (cannot be undone)list_customers — Search by name, filter active/inactiveget_customer — Full customer details by IDcreate_customer — Create with name, email, phone, addressupdate_customer — Update existing customer fieldslist_bills — Filter by status, vendor, due dateget_bill — Full bill details by IDcreate_bill — Create with vendor, line items, due datelist_payments — Filter by date range, customerrecord_payment — Record payment, optionally applied to an invoicelist_expenses — Filter by date range, vendorget_expense — Full expense details by IDcreate_expense — Create with account, payment type, line itemsget_profit_and_loss — P&L for a date range, optionally by month/weekget_balance_sheet — Balance sheet as of a dateget_cash_flow — Cash flow statement for a date rangeget_aging_receivables — Who owes you, grouped by aging bucketget_aging_payables — What you owe, grouped by aging bucketlist_accounts — Filter by type (Bank, Expense, Income, etc.)get_account — Full account details by IDcreate_account — Create new account with type and sub-typelist_vendors — Search by name, filter active/inactiveget_vendor — Full vendor details by IDcreate_vendor — Create with name, email, phonelist_items — Search by name, filter by type (Service/Inventory)get_item — Full item details by IDcreate_item — Create with name, type, price, income accountget_company_info — Company name, address, fiscal year, currency# Install dependencies
npm install
# Run in development mode
QB_CLIENT_ID=xxx QB_CLIENT_SECRET=xxx npx tsx src/index.ts
# Test with MCP Inspector
QB_CLIENT_ID=xxx QB_CLIENT_SECRET=xxx npx @modelcontextprotocol/inspector npx tsx src/index.ts
# Type check
npx tsc --noEmit
# Build for distribution
npm run build
# Run tests
npm test
src/
├── index.ts # Entry point — wires everything together
├── auth/
│ ├── oauth.ts # OAuth 2.0 flow (local callback server)
│ └── token-store.ts # Token persistence (~/.ledgerlink/)
├── quickbooks/
│ ├── client.ts # HTTP client (auth, retry, rate limiting)
│ ├── types.ts # TypeScript types for QB entities
│ ├── invoices.ts # Invoice API operations
│ ├── customers.ts # Customer API operations
│ └── ... # (10 entity modules total)
├── tools/
│ ├── invoice-tools.ts # MCP tool registrations for invoices
│ ├── customer-tools.ts # MCP tool registrations for customers
│ └── ... # (10 tool modules total)
├── resources/
│ └── index.ts # MCP read-only resources
└── utils/
├── rate-limiter.ts # Sliding window (450 req/min)
├── query-builder.ts # QB query builder with sanitization
└── formatters.ts # Report response formatting
MIT
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
80
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
74
Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Rank
72
An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"MCP"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_MCP",
"generatedAt": "2026-04-17T02:35:50.988Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "MCP",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "mcp",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "quickbooks",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "accounting",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "ai",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "invoice",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "model-context-protocol",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "cli",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:MCP|unknown|profile capability:mcp|supported|profile capability:quickbooks|supported|profile capability:accounting|supported|profile capability:ai|supported|profile capability:invoice|supported|profile capability:model-context-protocol|supported|profile capability:cli|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Bpmj Martin",
"href": "https://github.com/bpmj-martin/ledgerlink-mcp",
"sourceUrl": "https://github.com/bpmj-martin/ledgerlink-mcp",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-25T03:22:59.982Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "MCP",
"href": "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-25T03:22:59.982Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-bpmj-martin-ledgerlink-mcp/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to ledgerlink-mcp and adjacent AI workflows.