@bbookmind/mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +27 -0
- package/.claude-plugin/plugin.json +18 -0
- package/.env.example +15 -0
- package/.github/workflows/validate.yml +55 -0
- package/CEO_QUICKSTART.md +161 -0
- package/CLAUDE.md +30 -0
- package/CNAME +1 -0
- package/LAUNCH_CONTENT.md +210 -0
- package/LICENSE +21 -0
- package/README.md +196 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +283 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/db.d.ts +6 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +209 -0
- package/dist/lib/db.js.map +1 -0
- package/dist/lib/llm.d.ts +14 -0
- package/dist/lib/llm.d.ts.map +1 -0
- package/dist/lib/llm.js +110 -0
- package/dist/lib/llm.js.map +1 -0
- package/dist/lib/qbo.d.ts +35 -0
- package/dist/lib/qbo.d.ts.map +1 -0
- package/dist/lib/qbo.js +157 -0
- package/dist/lib/qbo.js.map +1 -0
- package/dist/tools/anomalies.d.ts +3 -0
- package/dist/tools/anomalies.d.ts.map +1 -0
- package/dist/tools/anomalies.js +142 -0
- package/dist/tools/anomalies.js.map +1 -0
- package/dist/tools/approveCategories.d.ts +3 -0
- package/dist/tools/approveCategories.d.ts.map +1 -0
- package/dist/tools/approveCategories.js +41 -0
- package/dist/tools/approveCategories.js.map +1 -0
- package/dist/tools/categorize.d.ts +3 -0
- package/dist/tools/categorize.d.ts.map +1 -0
- package/dist/tools/categorize.js +160 -0
- package/dist/tools/categorize.js.map +1 -0
- package/dist/tools/chaseEmail.d.ts +3 -0
- package/dist/tools/chaseEmail.d.ts.map +1 -0
- package/dist/tools/chaseEmail.js +29 -0
- package/dist/tools/chaseEmail.js.map +1 -0
- package/dist/tools/fetchTransactions.d.ts +3 -0
- package/dist/tools/fetchTransactions.d.ts.map +1 -0
- package/dist/tools/fetchTransactions.js +72 -0
- package/dist/tools/fetchTransactions.js.map +1 -0
- package/dist/tools/learnRules.d.ts +3 -0
- package/dist/tools/learnRules.d.ts.map +1 -0
- package/dist/tools/learnRules.js +72 -0
- package/dist/tools/learnRules.js.map +1 -0
- package/dist/tools/listCompanies.d.ts +3 -0
- package/dist/tools/listCompanies.d.ts.map +1 -0
- package/dist/tools/listCompanies.js +26 -0
- package/dist/tools/listCompanies.js.map +1 -0
- package/dist/tools/monthlyClose.d.ts +3 -0
- package/dist/tools/monthlyClose.d.ts.map +1 -0
- package/dist/tools/monthlyClose.js +92 -0
- package/dist/tools/monthlyClose.js.map +1 -0
- package/dist/tools/reconcile.d.ts +3 -0
- package/dist/tools/reconcile.d.ts.map +1 -0
- package/dist/tools/reconcile.js +86 -0
- package/dist/tools/reconcile.js.map +1 -0
- package/dist/tools/rejectCategories.d.ts +3 -0
- package/dist/tools/rejectCategories.d.ts.map +1 -0
- package/dist/tools/rejectCategories.js +36 -0
- package/dist/tools/rejectCategories.js.map +1 -0
- package/dist/tools/selectCompany.d.ts +3 -0
- package/dist/tools/selectCompany.d.ts.map +1 -0
- package/dist/tools/selectCompany.js +28 -0
- package/dist/tools/selectCompany.js.map +1 -0
- package/dist/tools/syncToQbo.d.ts +3 -0
- package/dist/tools/syncToQbo.d.ts.map +1 -0
- package/dist/tools/syncToQbo.js +53 -0
- package/dist/tools/syncToQbo.js.map +1 -0
- package/dist/tools/undoCategories.d.ts +3 -0
- package/dist/tools/undoCategories.d.ts.map +1 -0
- package/dist/tools/undoCategories.js +50 -0
- package/dist/tools/undoCategories.js.map +1 -0
- package/dist/tools/vendorSearch.d.ts +3 -0
- package/dist/tools/vendorSearch.d.ts.map +1 -0
- package/dist/tools/vendorSearch.js +39 -0
- package/dist/tools/vendorSearch.js.map +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/index.html +403 -0
- package/install/claude-desktop.json +14 -0
- package/install/cline.json +16 -0
- package/install/continue.json +14 -0
- package/install/cursor.json +14 -0
- package/install/goose.yaml +10 -0
- package/install/lm-studio.json +14 -0
- package/install/vscode-copilot.json +14 -0
- package/install/windsurf.json +14 -0
- package/mcp-server.toml +30 -0
- package/package.json +49 -0
- package/server.json +136 -0
- package/src/index.ts +313 -0
- package/src/lib/db.ts +212 -0
- package/src/lib/llm.ts +140 -0
- package/src/lib/qbo.ts +187 -0
- package/src/tools/anomalies.ts +144 -0
- package/src/tools/approveCategories.ts +46 -0
- package/src/tools/categorize.ts +166 -0
- package/src/tools/chaseEmail.ts +30 -0
- package/src/tools/fetchTransactions.ts +79 -0
- package/src/tools/learnRules.ts +71 -0
- package/src/tools/listCompanies.ts +30 -0
- package/src/tools/monthlyClose.ts +95 -0
- package/src/tools/reconcile.ts +86 -0
- package/src/tools/rejectCategories.ts +43 -0
- package/src/tools/selectCompany.ts +33 -0
- package/src/tools/syncToQbo.ts +56 -0
- package/src/tools/undoCategories.ts +50 -0
- package/src/tools/vendorSearch.ts +32 -0
- package/src/types.ts +11 -0
- package/tsconfig.json +23 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export const vendorSearchTool = {
|
|
2
|
+
name: "bookmind.vendor_search",
|
|
3
|
+
description: "Search transactions by vendor, description, category, or amount. Supports lookback and limit.",
|
|
4
|
+
schema: {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
transactions: { type: "array", items: { type: "object", properties: { id: { type: "string" }, date: { type: "string" }, amount: { type: "number" }, description: { type: "string" }, vendor: { type: "string" }, category: { type: "string" } }, required: ["id", "date", "amount"] } },
|
|
8
|
+
query: { type: "string" },
|
|
9
|
+
lookback_days: { type: "number", default: 365 },
|
|
10
|
+
limit: { type: "number", default: 50 },
|
|
11
|
+
},
|
|
12
|
+
required: ["transactions", "query"],
|
|
13
|
+
},
|
|
14
|
+
handler: async (args) => {
|
|
15
|
+
const { transactions, query, lookback_days = 365, limit = 50 } = args;
|
|
16
|
+
const since = new Date(Date.now() - lookback_days * 24 * 60 * 60 * 1000).toISOString().split("T")[0];
|
|
17
|
+
const q = query.toLowerCase().trim();
|
|
18
|
+
const results = transactions
|
|
19
|
+
.filter((t) => new Date(t.date) >= new Date(since))
|
|
20
|
+
.filter((t) => `${t.vendor || ""} ${t.description || ""} ${t.category || ""} ${t.amount}`.toLowerCase().includes(q))
|
|
21
|
+
.slice(0, limit);
|
|
22
|
+
const total = results.reduce((s, t) => s + Math.abs(t.amount), 0);
|
|
23
|
+
const byVendor = {};
|
|
24
|
+
for (const t of results) {
|
|
25
|
+
const v = t.vendor || "Unknown";
|
|
26
|
+
if (!byVendor[v])
|
|
27
|
+
byVendor[v] = { amount: 0, count: 0 };
|
|
28
|
+
byVendor[v].amount += Math.abs(t.amount);
|
|
29
|
+
byVendor[v].count++;
|
|
30
|
+
}
|
|
31
|
+
const byCategory = {};
|
|
32
|
+
for (const t of results) {
|
|
33
|
+
const c = t.category || "Uncategorized";
|
|
34
|
+
byCategory[c] = (byCategory[c] || 0) + Math.abs(t.amount);
|
|
35
|
+
}
|
|
36
|
+
return `Found ${results.length} matching "${query}" (${lookback_days}d). Total: $${total.toLocaleString(undefined, { minimumFractionDigits: 2 })}\n\nBy Vendor:\n${JSON.stringify(byVendor, null, 2)}\n\nBy Category:\n${JSON.stringify(byCategory, null, 2)}\n\n${JSON.stringify(results.slice(0, 10), null, 2)}${results.length > 10 ? `\n... and ${results.length - 10} more` : ""}`;
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=vendorSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vendorSearch.js","sourceRoot":"","sources":["../../src/tools/vendorSearch.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Database } from "sql.js";
|
|
2
|
+
export interface ToolDefinition {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
schema: Record<string, unknown>;
|
|
6
|
+
handler: (args: Record<string, unknown>, db: Database) => Promise<string>;
|
|
7
|
+
}
|
|
8
|
+
export declare const activeCompanyId: {
|
|
9
|
+
current: string | null;
|
|
10
|
+
};
|
|
11
|
+
export declare let companyState: Record<string, {
|
|
12
|
+
name: string;
|
|
13
|
+
realmId: string;
|
|
14
|
+
tokenFile: string;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E;AAED,eAAO,MAAM,eAAe,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAsB,CAAC;AAC7E,eAAO,IAAI,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAM,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,eAAe,GAA+B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7E,MAAM,CAAC,IAAI,YAAY,GAAyE,EAAE,CAAC"}
|
package/index.html
ADDED
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>BookMind — AI Bookkeeping for QuickBooks Online</title>
|
|
7
|
+
<meta name="description" content="BookMind is an open-source MCP server that brings AI-powered bookkeeping to QuickBooks Online. Auto-categorize, reconcile, close books, and detect anomalies using any AI provider.">
|
|
8
|
+
<meta name="keywords" content="quickbooks mcp, ai bookkeeping, qbo automation, mcp server, bookkeeping ai, monthly close automation, quickbooks online">
|
|
9
|
+
<meta property="og:title" content="BookMind — AI Bookkeeping for QuickBooks Online">
|
|
10
|
+
<meta property="og:description" content="Open-source MCP server for AI-powered QuickBooks bookkeeping. Use any model, any agent.">
|
|
11
|
+
<meta property="og:type" content="website">
|
|
12
|
+
<meta property="og:url" content="https://bookmind.dev">
|
|
13
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
14
|
+
<meta name="twitter:title" content="BookMind — AI Bookkeeping for QuickBooks Online">
|
|
15
|
+
<meta name="twitter:description" content="Open-source MCP server. Auto-categorize, reconcile, close books. Any model, any agent.">
|
|
16
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
17
|
+
<script>
|
|
18
|
+
tailwind.config = {
|
|
19
|
+
theme: {
|
|
20
|
+
extend: {
|
|
21
|
+
colors: {
|
|
22
|
+
brand: {
|
|
23
|
+
50: '#eef2ff', 100: '#e0e7ff', 200: '#c7d2fe', 300: '#a5b4fc',
|
|
24
|
+
400: '#818cf8', 500: '#6366f1', 600: '#4f46e5', 700: '#4338ca',
|
|
25
|
+
800: '#3730a3', 900: '#312e81', 950: '#1e1b4b'
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
fontFamily: {
|
|
29
|
+
sans: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
|
|
30
|
+
mono: ['JetBrains Mono', 'Fira Code', 'monospace']
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
</script>
|
|
36
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
37
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
38
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
39
|
+
<style>
|
|
40
|
+
body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
|
|
41
|
+
.gradient-text { background: linear-gradient(135deg, #6366f1, #8b5cf6, #a78bfa); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
|
|
42
|
+
.hero-gradient { background: linear-gradient(135deg, #0f172a 0%, #1e1b4b 50%, #0f172a 100%); }
|
|
43
|
+
.card-hover { transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); }
|
|
44
|
+
.card-hover:hover { transform: translateY(-4px); box-shadow: 0 20px 40px -12px rgba(99, 102, 241, 0.25); }
|
|
45
|
+
.glow { box-shadow: 0 0 40px -12px rgba(99, 102, 241, 0.3); }
|
|
46
|
+
.code-block { background: #0f172a; border: 1px solid #1e293b; border-radius: 12px; }
|
|
47
|
+
.section-fade { opacity: 0; transform: translateY(20px); animation: fadeUp 0.6s ease-out forwards; }
|
|
48
|
+
@keyframes fadeUp { to { opacity: 1; transform: translateY(0); } }
|
|
49
|
+
.delay-1 { animation-delay: 0.1s; }
|
|
50
|
+
.delay-2 { animation-delay: 0.2s; }
|
|
51
|
+
.delay-3 { animation-delay: 0.3s; }
|
|
52
|
+
.delay-4 { animation-delay: 0.4s; }
|
|
53
|
+
.grid-pattern { background-image: radial-gradient(rgba(99, 102, 241, 0.07) 1px, transparent 1px); background-size: 24px 24px; }
|
|
54
|
+
</style>
|
|
55
|
+
</head>
|
|
56
|
+
<body class="bg-[#0a0a0f] text-white font-sans antialiased">
|
|
57
|
+
<nav class="fixed top-0 w-full z-50 border-b border-white/5 bg-[#0a0a0f]/80 backdrop-blur-xl">
|
|
58
|
+
<div class="max-w-7xl mx-auto px-6 h-16 flex items-center justify-between">
|
|
59
|
+
<div class="flex items-center gap-3">
|
|
60
|
+
<div class="w-8 h-8 rounded-lg bg-gradient-to-br from-brand-400 to-brand-600 flex items-center justify-center text-sm font-bold">B</div>
|
|
61
|
+
<span class="font-semibold text-lg">BookMind</span>
|
|
62
|
+
</div>
|
|
63
|
+
<div class="hidden md:flex items-center gap-8 text-sm text-gray-400">
|
|
64
|
+
<a href="#features" class="hover:text-white transition-colors">Features</a>
|
|
65
|
+
<a href="#tools" class="hover:text-white transition-colors">Tools</a>
|
|
66
|
+
<a href="#pricing" class="hover:text-white transition-colors">Pricing</a>
|
|
67
|
+
<a href="#docs" class="hover:text-white transition-colors">Docs</a>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="flex items-center gap-4">
|
|
70
|
+
<a href="https://github.com/bbookmind/mcp" class="text-gray-400 hover:text-white transition-colors" aria-label="GitHub">
|
|
71
|
+
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/></svg>
|
|
72
|
+
</a>
|
|
73
|
+
<a href="https://www.npmjs.com/package/@bbookmind/mcp" class="hidden sm:inline-flex items-center gap-2 px-4 py-2 bg-brand-600 hover:bg-brand-500 rounded-lg text-sm font-medium transition-all glow">
|
|
74
|
+
<svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"/></svg>
|
|
75
|
+
Install
|
|
76
|
+
</a>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</nav>
|
|
80
|
+
|
|
81
|
+
<main>
|
|
82
|
+
<section class="hero-gradient min-h-[90vh] flex items-center relative overflow-hidden pt-16">
|
|
83
|
+
<div class="absolute inset-0 grid-pattern opacity-50"></div>
|
|
84
|
+
<div class="absolute top-1/4 right-0 w-96 h-96 bg-brand-500/10 rounded-full blur-3xl"></div>
|
|
85
|
+
<div class="absolute bottom-1/4 left-0 w-72 h-72 bg-purple-500/10 rounded-full blur-3xl"></div>
|
|
86
|
+
<div class="max-w-7xl mx-auto px-6 py-24 relative z-10">
|
|
87
|
+
<div class="max-w-3xl">
|
|
88
|
+
<div class="inline-flex items-center gap-2 px-4 py-1.5 bg-brand-500/10 border border-brand-500/20 rounded-full text-sm text-brand-300 mb-8 section-fade">
|
|
89
|
+
<span class="w-2 h-2 rounded-full bg-brand-400 animate-pulse"></span>
|
|
90
|
+
Open Source • MCP Compatible • Provider Agnostic
|
|
91
|
+
</div>
|
|
92
|
+
<h1 class="text-5xl md:text-7xl font-extrabold leading-tight mb-6 section-fade delay-1">
|
|
93
|
+
AI Bookkeeping<br>
|
|
94
|
+
<span class="gradient-text">for QuickBooks Online</span>
|
|
95
|
+
</h1>
|
|
96
|
+
<p class="text-xl text-gray-400 leading-relaxed max-w-2xl mb-10 section-fade delay-2">
|
|
97
|
+
Auto-categorize transactions, reconcile bank feeds, generate monthly close packages,
|
|
98
|
+
and detect anomalies — all from your AI agent. Works with <strong class="text-white">any model, any provider</strong>.
|
|
99
|
+
</p>
|
|
100
|
+
<div class="flex flex-wrap gap-4 section-fade delay-3">
|
|
101
|
+
<a href="https://www.npmjs.com/package/@bbookmind/mcp" class="inline-flex items-center gap-3 px-8 py-4 bg-brand-600 hover:bg-brand-500 rounded-xl font-semibold text-lg transition-all glow">
|
|
102
|
+
<svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"/></svg>
|
|
103
|
+
npx @bbookmind/mcp
|
|
104
|
+
</a>
|
|
105
|
+
<a href="https://github.com/bbookmind/mcp" class="inline-flex items-center gap-3 px-8 py-4 bg-white/5 hover:bg-white/10 border border-white/10 rounded-xl font-semibold text-lg transition-all">
|
|
106
|
+
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/></svg>
|
|
107
|
+
View on GitHub
|
|
108
|
+
</a>
|
|
109
|
+
</div>
|
|
110
|
+
<div class="flex items-center gap-6 mt-10 text-sm text-gray-500 section-fade delay-4">
|
|
111
|
+
<span class="flex items-center gap-2">
|
|
112
|
+
<svg class="w-4 h-4 text-green-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
|
|
113
|
+
Open Source (MIT)
|
|
114
|
+
</span>
|
|
115
|
+
<span class="flex items-center gap-2">
|
|
116
|
+
<svg class="w-4 h-4 text-green-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
|
|
117
|
+
Local SQLite
|
|
118
|
+
</span>
|
|
119
|
+
<span class="flex items-center gap-2">
|
|
120
|
+
<svg class="w-4 h-4 text-green-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
|
|
121
|
+
7+ LLM Providers
|
|
122
|
+
</span>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</section>
|
|
127
|
+
|
|
128
|
+
<section id="features" class="py-24 border-t border-white/5">
|
|
129
|
+
<div class="max-w-7xl mx-auto px-6">
|
|
130
|
+
<div class="text-center mb-16">
|
|
131
|
+
<h2 class="text-4xl font-bold mb-4">Everything your AI bookkeeper needs</h2>
|
|
132
|
+
<p class="text-xl text-gray-400 max-w-2xl mx-auto">14 tools covering the full bookkeeping lifecycle — from categorization to monthly close.</p>
|
|
133
|
+
</div>
|
|
134
|
+
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
135
|
+
<div class="p-6 rounded-2xl bg-white/[0.03] border border-white/[0.06] card-hover">
|
|
136
|
+
<div class="w-12 h-12 rounded-xl bg-gradient-to-br from-brand-400/20 to-brand-600/20 border border-brand-500/20 flex items-center justify-center mb-4">
|
|
137
|
+
<svg class="w-6 h-6 text-brand-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"/></svg>
|
|
138
|
+
</div>
|
|
139
|
+
<h3 class="font-semibold text-lg mb-2">Auto-categorize</h3>
|
|
140
|
+
<p class="text-gray-400 text-sm leading-relaxed">90%+ transactions categorized instantly using learned rules + any LLM. Teach it once, applies forever.</p>
|
|
141
|
+
</div>
|
|
142
|
+
<div class="p-6 rounded-2xl bg-white/[0.03] border border-white/[0.06] card-hover">
|
|
143
|
+
<div class="w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-400/20 to-emerald-600/20 border border-emerald-500/20 flex items-center justify-center mb-4">
|
|
144
|
+
<svg class="w-6 h-6 text-emerald-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/></svg>
|
|
145
|
+
</div>
|
|
146
|
+
<h3 class="font-semibold text-lg mb-2">Reconcile</h3>
|
|
147
|
+
<p class="text-gray-400 text-sm leading-relaxed">Match bank transactions to invoices/bills by amount, date, and vendor fuzzy matching.</p>
|
|
148
|
+
</div>
|
|
149
|
+
<div class="p-6 rounded-2xl bg-white/[0.03] border border-white/[0.06] card-hover">
|
|
150
|
+
<div class="w-12 h-12 rounded-xl bg-gradient-to-br from-violet-400/20 to-violet-600/20 border border-violet-500/20 flex items-center justify-center mb-4">
|
|
151
|
+
<svg class="w-6 h-6 text-violet-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"/></svg>
|
|
152
|
+
</div>
|
|
153
|
+
<h3 class="font-semibold text-lg mb-2">Monthly Close</h3>
|
|
154
|
+
<p class="text-gray-400 text-sm leading-relaxed">Full P&L, Balance Sheet, Cash Flow, top vendors, AR aging, and action items — one prompt.</p>
|
|
155
|
+
</div>
|
|
156
|
+
<div class="p-6 rounded-2xl bg-white/[0.03] border border-white/[0.06] card-hover">
|
|
157
|
+
<div class="w-12 h-12 rounded-xl bg-gradient-to-br from-rose-400/20 to-rose-600/20 border border-rose-500/20 flex items-center justify-center mb-4">
|
|
158
|
+
<svg class="w-6 h-6 text-rose-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4.5c-.77-.833-2.694-.833-3.464 0L3.34 16.5c-.77.833.192 2.5 1.732 2.5z"/></svg>
|
|
159
|
+
</div>
|
|
160
|
+
<h3 class="font-semibold text-lg mb-2">Anomaly Detection</h3>
|
|
161
|
+
<p class="text-gray-400 text-sm leading-relaxed">Duplicate payments, vendor cost drift, statistical outliers, weekend transactions, new vendors.</p>
|
|
162
|
+
</div>
|
|
163
|
+
<div class="p-6 rounded-2xl bg-white/[0.03] border border-white/[0.06] card-hover">
|
|
164
|
+
<div class="w-12 h-12 rounded-xl bg-gradient-to-br from-amber-400/20 to-amber-600/20 border border-amber-500/20 flex items-center justify-center mb-4">
|
|
165
|
+
<svg class="w-6 h-6 text-amber-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/></svg>
|
|
166
|
+
</div>
|
|
167
|
+
<h3 class="font-semibold text-lg mb-2">Vendor Search</h3>
|
|
168
|
+
<p class="text-gray-400 text-sm leading-relaxed">"What did we pay AWS last quarter?" — natural language queries across all transactions.</p>
|
|
169
|
+
</div>
|
|
170
|
+
<div class="p-6 rounded-2xl bg-white/[0.03] border border-white/[0.06] card-hover">
|
|
171
|
+
<div class="w-12 h-12 rounded-xl bg-gradient-to-br from-sky-400/20 to-sky-600/20 border border-sky-500/20 flex items-center justify-center mb-4">
|
|
172
|
+
<svg class="w-6 h-6 text-sky-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/></svg>
|
|
173
|
+
</div>
|
|
174
|
+
<h3 class="font-semibold text-lg mb-2">Chase Emails</h3>
|
|
175
|
+
<p class="text-gray-400 text-sm leading-relaxed">Professional overdue invoice emails in friendly, firm, or escalation tones. Remembers preferences.</p>
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
</section>
|
|
180
|
+
|
|
181
|
+
<section id="tools" class="py-24 border-t border-white/5 bg-white/[0.01]">
|
|
182
|
+
<div class="max-w-7xl mx-auto px-6">
|
|
183
|
+
<div class="text-center mb-16">
|
|
184
|
+
<h2 class="text-4xl font-bold mb-4">14 tools, one MCP server</h2>
|
|
185
|
+
<p class="text-xl text-gray-400 max-w-2xl mx-auto">Every tool is documented, typed, and ready for your AI agent to discover automatically.</p>
|
|
186
|
+
</div>
|
|
187
|
+
<div class="max-w-4xl mx-auto">
|
|
188
|
+
<div class="code-block p-6 overflow-x-auto">
|
|
189
|
+
<pre class="text-sm leading-relaxed"><span class="text-gray-500"># BookMind tool reference — 14 tools</span>
|
|
190
|
+
|
|
191
|
+
<span class="text-brand-400">bookmind.categorize</span> <span class="text-gray-500">Auto-categorize uncategorized transactions</span>
|
|
192
|
+
<span class="text-brand-400">bookmind.approve_categorizations</span> <span class="text-gray-500">Approve pending categorizations in batch</span>
|
|
193
|
+
<span class="text-brand-400">bookmind.reject_categorizations</span> <span class="text-gray-500">Reject with feedback, auto-create rules</span>
|
|
194
|
+
<span class="text-brand-400">bookmind.undo_categorize</span> <span class="text-gray-500">Rollback categorization from audit log</span>
|
|
195
|
+
<span class="text-brand-400">bookmind.fetch_transactions</span> <span class="text-gray-500">Pull data from QuickBooks Online</span>
|
|
196
|
+
<span class="text-brand-400">bookmind.sync_to_qbo</span> <span class="text-gray-500">Push approved changes back to QBO</span>
|
|
197
|
+
<span class="text-brand-400">bookmind.reconcile</span> <span class="text-gray-500">Match bank feed to invoices/bills</span>
|
|
198
|
+
<span class="text-brand-400">bookmind.anomalies</span> <span class="text-gray-500">Statistical anomaly detection</span>
|
|
199
|
+
<span class="text-brand-400">bookmind.monthly_close</span> <span class="text-gray-500">Generate close package (P&L, BS, CF)</span>
|
|
200
|
+
<span class="text-brand-400">bookmind.vendor_search</span> <span class="text-gray-500">Natural language vendor search</span>
|
|
201
|
+
<span class="text-brand-400">bookmind.chase_email</span> <span class="text-gray-500">Generate overdue invoice emails</span>
|
|
202
|
+
<span class="text-brand-400">bookmind.learn_rules</span> <span class="text-gray-500">Create rules from user corrections</span>
|
|
203
|
+
<span class="text-brand-400">bookmind.select_company</span> <span class="text-gray-500">Switch between QBO companies</span>
|
|
204
|
+
<span class="text-brand-400">bookmind.list_companies</span> <span class="text-gray-500">List connected QBO companies</span></pre>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
</section>
|
|
209
|
+
|
|
210
|
+
<section class="py-24 border-t border-white/5">
|
|
211
|
+
<div class="max-w-7xl mx-auto px-6">
|
|
212
|
+
<div class="grid md:grid-cols-2 gap-16 items-center">
|
|
213
|
+
<div>
|
|
214
|
+
<h2 class="text-4xl font-bold mb-6">Runs locally. Your data stays yours.</h2>
|
|
215
|
+
<p class="text-gray-400 text-lg leading-relaxed mb-8">
|
|
216
|
+
BookMind stores everything in a local SQLite database on your machine.
|
|
217
|
+
No cloud dependency, no third-party servers, no data leaving your network.
|
|
218
|
+
</p>
|
|
219
|
+
<div class="space-y-4">
|
|
220
|
+
<div class="flex items-start gap-4">
|
|
221
|
+
<div class="w-6 h-6 rounded-full bg-green-500/20 border border-green-500/30 flex items-center justify-center flex-shrink-0 mt-0.5">
|
|
222
|
+
<svg class="w-3 h-3 text-green-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
|
|
223
|
+
</div>
|
|
224
|
+
<div>
|
|
225
|
+
<p class="font-medium">Zero cloud dependency</p>
|
|
226
|
+
<p class="text-sm text-gray-500">Your financial data never leaves your machine</p>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
<div class="flex items-start gap-4">
|
|
230
|
+
<div class="w-6 h-6 rounded-full bg-green-500/20 border border-green-500/30 flex items-center justify-center flex-shrink-0 mt-0.5">
|
|
231
|
+
<svg class="w-3 h-3 text-green-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
|
|
232
|
+
</div>
|
|
233
|
+
<div>
|
|
234
|
+
<p class="font-medium">Works with any LLM</p>
|
|
235
|
+
<p class="text-sm text-gray-500">OpenAI, Anthropic, Google, Groq, Mistral, NVIDIA, Ollama</p>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
<div class="flex items-start gap-4">
|
|
239
|
+
<div class="w-6 h-6 rounded-full bg-green-500/20 border border-green-500/30 flex items-center justify-center flex-shrink-0 mt-0.5">
|
|
240
|
+
<svg class="w-3 h-3 text-green-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
|
|
241
|
+
</div>
|
|
242
|
+
<div>
|
|
243
|
+
<p class="font-medium">Works with any MCP client</p>
|
|
244
|
+
<p class="text-sm text-gray-500">Claude, Cursor, Cline, Continue, Windsurf, VS Code Copilot, Goose</p>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
<div class="flex items-start gap-4">
|
|
248
|
+
<div class="w-6 h-6 rounded-full bg-green-500/20 border border-green-500/30 flex items-center justify-center flex-shrink-0 mt-0.5">
|
|
249
|
+
<svg class="w-3 h-3 text-green-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
|
|
250
|
+
</div>
|
|
251
|
+
<div>
|
|
252
|
+
<p class="font-medium">Learns from you</p>
|
|
253
|
+
<p class="text-sm text-gray-500">Every correction becomes a persistent rule. It gets smarter over time.</p>
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
<div class="relative">
|
|
259
|
+
<div class="code-block p-6 glow">
|
|
260
|
+
<div class="flex items-center gap-2 mb-4">
|
|
261
|
+
<div class="w-3 h-3 rounded-full bg-red-500/50"></div>
|
|
262
|
+
<div class="w-3 h-3 rounded-full bg-yellow-500/50"></div>
|
|
263
|
+
<div class="w-3 h-3 rounded-full bg-green-500/50"></div>
|
|
264
|
+
<span class="text-xs text-gray-500 ml-2">terminal</span>
|
|
265
|
+
</div>
|
|
266
|
+
<pre class="text-sm leading-relaxed"><span class="text-gray-500">$</span> npx @bbookmind/mcp
|
|
267
|
+
|
|
268
|
+
<span class="text-brand-400">BookMind v1.0.0</span>
|
|
269
|
+
<span class="text-gray-500">14 tools · 3 resources · 3 prompts</span>
|
|
270
|
+
<span class="text-gray-500">Active company: default</span>
|
|
271
|
+
|
|
272
|
+
<span class="text-gray-500">→ Ready. Connect from any MCP client.</span>
|
|
273
|
+
|
|
274
|
+
<span class="text-gray-500"># In your AI agent:</span>
|
|
275
|
+
<span class="text-gray-500">"Categorize my uncategorized transactions"</span>
|
|
276
|
+
<span class="text-gray-500">"Reconcile my bank feed"</span>
|
|
277
|
+
<span class="text-gray-500">"Generate March close package"</span></pre>
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
</div>
|
|
282
|
+
</section>
|
|
283
|
+
|
|
284
|
+
<section id="pricing" class="py-24 border-t border-white/5">
|
|
285
|
+
<div class="max-w-7xl mx-auto px-6">
|
|
286
|
+
<div class="text-center mb-16">
|
|
287
|
+
<h2 class="text-4xl font-bold mb-4">Simple, transparent pricing</h2>
|
|
288
|
+
<p class="text-xl text-gray-400">Start free. Upgrade as you grow. No credit card required.</p>
|
|
289
|
+
</div>
|
|
290
|
+
<div class="grid md:grid-cols-3 gap-8 max-w-5xl mx-auto">
|
|
291
|
+
<div class="p-8 rounded-2xl bg-white/[0.02] border border-white/[0.06] card-hover">
|
|
292
|
+
<h3 class="font-semibold text-lg mb-2">Free</h3>
|
|
293
|
+
<div class="text-4xl font-bold mb-1">$0</div>
|
|
294
|
+
<p class="text-gray-500 text-sm mb-6">forever</p>
|
|
295
|
+
<ul class="space-y-3 mb-8">
|
|
296
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>50 transactions/month</li>
|
|
297
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>1 company</li>
|
|
298
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>Rules-only categorization</li>
|
|
299
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>Basic vendor search</li>
|
|
300
|
+
</ul>
|
|
301
|
+
<a href="https://www.npmjs.com/package/@bbookmind/mcp" class="block w-full text-center py-3 rounded-xl border border-white/10 hover:bg-white/5 transition-all text-sm font-medium">Get Started</a>
|
|
302
|
+
</div>
|
|
303
|
+
<div class="p-8 rounded-2xl bg-gradient-to-b from-brand-600/10 to-transparent border border-brand-500/30 card-hover glow relative">
|
|
304
|
+
<div class="absolute -top-3 left-1/2 -translate-x-1/2 px-4 py-1 bg-brand-600 rounded-full text-xs font-medium">Most Popular</div>
|
|
305
|
+
<h3 class="font-semibold text-lg mb-2">Pro</h3>
|
|
306
|
+
<div class="text-4xl font-bold mb-1">$29</div>
|
|
307
|
+
<p class="text-gray-500 text-sm mb-6">/month • 14-day free trial</p>
|
|
308
|
+
<ul class="space-y-3 mb-8">
|
|
309
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>1,000 transactions/month</li>
|
|
310
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>3 companies</li>
|
|
311
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>AI categorize + reconcile</li>
|
|
312
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>Anomaly detection</li>
|
|
313
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>Vendor search</li>
|
|
314
|
+
</ul>
|
|
315
|
+
<a href="https://www.npmjs.com/package/@bbookmind/mcp" class="block w-full text-center py-3 rounded-xl bg-brand-600 hover:bg-brand-500 transition-all text-sm font-medium">Start Trial</a>
|
|
316
|
+
</div>
|
|
317
|
+
<div class="p-8 rounded-2xl bg-white/[0.02] border border-white/[0.06] card-hover">
|
|
318
|
+
<h3 class="font-semibold text-lg mb-2">Firm</h3>
|
|
319
|
+
<div class="text-4xl font-bold mb-1">$149</div>
|
|
320
|
+
<p class="text-gray-500 text-sm mb-6">/month • unlimited</p>
|
|
321
|
+
<ul class="space-y-3 mb-8">
|
|
322
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>Unlimited transactions</li>
|
|
323
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>Unlimited clients</li>
|
|
324
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>Monthly close packages</li>
|
|
325
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>Chase email generator</li>
|
|
326
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>White-label PDF reports</li>
|
|
327
|
+
<li class="flex items-center gap-3 text-sm"><svg class="w-4 h-4 text-green-400 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>Team seats ($29/seat)</li>
|
|
328
|
+
</ul>
|
|
329
|
+
<a href="mailto:support@bookmind.dev" class="block w-full text-center py-3 rounded-xl border border-white/10 hover:bg-white/5 transition-all text-sm font-medium">Contact Sales</a>
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
</section>
|
|
334
|
+
|
|
335
|
+
<section class="py-24 border-t border-white/5">
|
|
336
|
+
<div class="max-w-7xl mx-auto px-6">
|
|
337
|
+
<div class="rounded-3xl bg-gradient-to-br from-brand-600/20 via-brand-800/10 to-transparent border border-brand-500/20 p-12 md:p-16 text-center relative overflow-hidden">
|
|
338
|
+
<div class="absolute top-0 right-0 w-64 h-64 bg-brand-500/10 rounded-full blur-3xl"></div>
|
|
339
|
+
<div class="relative z-10">
|
|
340
|
+
<h2 class="text-4xl font-bold mb-4">Install in 30 seconds</h2>
|
|
341
|
+
<p class="text-xl text-gray-400 mb-8 max-w-xl mx-auto">Connect BookMind to your AI agent and start automating bookkeeping today.</p>
|
|
342
|
+
<div class="max-w-2xl mx-auto">
|
|
343
|
+
<div class="code-block p-4 mb-6 text-left">
|
|
344
|
+
<pre class="text-sm"><span class="text-gray-500"># One command. Any MCP client.</span>
|
|
345
|
+
npx @bbookmind/mcp</pre>
|
|
346
|
+
</div>
|
|
347
|
+
<div class="flex flex-wrap justify-center gap-3 text-sm text-gray-500">
|
|
348
|
+
<span class="px-3 py-1.5 bg-white/5 rounded-lg">Claude Desktop</span>
|
|
349
|
+
<span class="px-3 py-1.5 bg-white/5 rounded-lg">Cursor</span>
|
|
350
|
+
<span class="px-3 py-1.5 bg-white/5 rounded-lg">Cline</span>
|
|
351
|
+
<span class="px-3 py-1.5 bg-white/5 rounded-lg">Continue</span>
|
|
352
|
+
<span class="px-3 py-1.5 bg-white/5 rounded-lg">Windsurf</span>
|
|
353
|
+
<span class="px-3 py-1.5 bg-white/5 rounded-lg">VS Code Copilot</span>
|
|
354
|
+
<span class="px-3 py-1.5 bg-white/5 rounded-lg">Goose</span>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
</div>
|
|
358
|
+
</div>
|
|
359
|
+
</div>
|
|
360
|
+
</section>
|
|
361
|
+
</main>
|
|
362
|
+
|
|
363
|
+
<footer class="border-t border-white/5 py-12">
|
|
364
|
+
<div class="max-w-7xl mx-auto px-6">
|
|
365
|
+
<div class="grid md:grid-cols-4 gap-8 mb-12">
|
|
366
|
+
<div>
|
|
367
|
+
<div class="flex items-center gap-2 mb-4">
|
|
368
|
+
<div class="w-7 h-7 rounded-lg bg-gradient-to-br from-brand-400 to-brand-600 flex items-center justify-center text-xs font-bold">B</div>
|
|
369
|
+
<span class="font-semibold">BookMind</span>
|
|
370
|
+
</div>
|
|
371
|
+
<p class="text-sm text-gray-500">AI bookkeeping for QuickBooks Online. Open source. Provider agnostic.</p>
|
|
372
|
+
</div>
|
|
373
|
+
<div>
|
|
374
|
+
<h4 class="font-medium text-sm mb-4">Product</h4>
|
|
375
|
+
<ul class="space-y-2 text-sm text-gray-500">
|
|
376
|
+
<li><a href="#features" class="hover:text-white transition-colors">Features</a></li>
|
|
377
|
+
<li><a href="#pricing" class="hover:text-white transition-colors">Pricing</a></li>
|
|
378
|
+
<li><a href="https://github.com/bbookmind/mcp" class="hover:text-white transition-colors">GitHub</a></li>
|
|
379
|
+
</ul>
|
|
380
|
+
</div>
|
|
381
|
+
<div>
|
|
382
|
+
<h4 class="font-medium text-sm mb-4">Resources</h4>
|
|
383
|
+
<ul class="space-y-2 text-sm text-gray-500">
|
|
384
|
+
<li><a href="https://github.com/bbookmind/mcp" class="hover:text-white transition-colors">Documentation</a></li>
|
|
385
|
+
<li><a href="https://github.com/bbookmind/mcp/issues" class="hover:text-white transition-colors">Issues</a></li>
|
|
386
|
+
<li><a href="https://www.npmjs.com/package/@bbookmind/mcp" class="hover:text-white transition-colors">npm</a></li>
|
|
387
|
+
</ul>
|
|
388
|
+
</div>
|
|
389
|
+
<div>
|
|
390
|
+
<h4 class="font-medium text-sm mb-4">Contact</h4>
|
|
391
|
+
<ul class="space-y-2 text-sm text-gray-500">
|
|
392
|
+
<li><a href="mailto:support@bookmind.dev" class="hover:text-white transition-colors">support@bookmind.dev</a></li>
|
|
393
|
+
<li><a href="https://github.com/bbookmind/mcp" class="hover:text-white transition-colors">GitHub Issues</a></li>
|
|
394
|
+
</ul>
|
|
395
|
+
</div>
|
|
396
|
+
</div>
|
|
397
|
+
<div class="border-t border-white/5 pt-8 text-center text-sm text-gray-600">
|
|
398
|
+
<p>MIT Licensed — free to use, modify, and distribute.</p>
|
|
399
|
+
</div>
|
|
400
|
+
</div>
|
|
401
|
+
</footer>
|
|
402
|
+
</body>
|
|
403
|
+
</html>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"bookmind": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@bookmind/mcp"],
|
|
6
|
+
"env": {
|
|
7
|
+
"QBO_CLIENT_ID": "${env:QBO_CLIENT_ID}",
|
|
8
|
+
"QBO_CLIENT_SECRET": "${env:QBO_CLIENT_SECRET}",
|
|
9
|
+
"QBO_REDIRECT_URI": "http://localhost:3000/callback",
|
|
10
|
+
"QBO_ENVIRONMENT": "sandbox"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcp": {
|
|
3
|
+
"servers": {
|
|
4
|
+
"bookmind": {
|
|
5
|
+
"command": "npx",
|
|
6
|
+
"args": ["-y", "@bookmind/mcp"],
|
|
7
|
+
"env": {
|
|
8
|
+
"QBO_CLIENT_ID": "${env:QBO_CLIENT_ID}",
|
|
9
|
+
"QBO_CLIENT_SECRET": "${env:QBO_CLIENT_SECRET}",
|
|
10
|
+
"QBO_REDIRECT_URI": "http://localhost:3000/callback",
|
|
11
|
+
"QBO_ENVIRONMENT": "sandbox"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"bookmind": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@bookmind/mcp"],
|
|
6
|
+
"env": {
|
|
7
|
+
"QBO_CLIENT_ID": "${env:QBO_CLIENT_ID}",
|
|
8
|
+
"QBO_CLIENT_SECRET": "${env:QBO_CLIENT_SECRET}",
|
|
9
|
+
"QBO_REDIRECT_URI": "http://localhost:3000/callback",
|
|
10
|
+
"QBO_ENVIRONMENT": "sandbox"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"bookmind": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@bookmind/mcp"],
|
|
6
|
+
"env": {
|
|
7
|
+
"QBO_CLIENT_ID": "${env:QBO_CLIENT_ID}",
|
|
8
|
+
"QBO_CLIENT_SECRET": "${env:QBO_CLIENT_SECRET}",
|
|
9
|
+
"QBO_REDIRECT_URI": "http://localhost:3000/callback",
|
|
10
|
+
"QBO_ENVIRONMENT": "sandbox"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
extensions:
|
|
2
|
+
- name: bookmind
|
|
3
|
+
type: stdio
|
|
4
|
+
command: npx
|
|
5
|
+
args: ["-y", "@bookmind/mcp"]
|
|
6
|
+
env:
|
|
7
|
+
QBO_CLIENT_ID: "${env:QBO_CLIENT_ID}"
|
|
8
|
+
QBO_CLIENT_SECRET: "${env:QBO_CLIENT_SECRET}"
|
|
9
|
+
QBO_REDIRECT_URI: "http://localhost:3000/callback"
|
|
10
|
+
QBO_ENVIRONMENT: "sandbox"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"bookmind": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@bookmind/mcp"],
|
|
6
|
+
"env": {
|
|
7
|
+
"QBO_CLIENT_ID": "${env:QBO_CLIENT_ID}",
|
|
8
|
+
"QBO_CLIENT_SECRET": "${env:QBO_CLIENT_SECRET}",
|
|
9
|
+
"QBO_REDIRECT_URI": "http://localhost:3000/callback",
|
|
10
|
+
"QBO_ENVIRONMENT": "sandbox"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"bookmind": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@bookmind/mcp"],
|
|
6
|
+
"env": {
|
|
7
|
+
"QBO_CLIENT_ID": "${env:QBO_CLIENT_ID}",
|
|
8
|
+
"QBO_CLIENT_SECRET": "${env:QBO_CLIENT_SECRET}",
|
|
9
|
+
"QBO_REDIRECT_URI": "http://localhost:3000/callback",
|
|
10
|
+
"QBO_ENVIRONMENT": "sandbox"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"bookmind": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@bookmind/mcp"],
|
|
6
|
+
"env": {
|
|
7
|
+
"QBO_CLIENT_ID": "${env:QBO_CLIENT_ID}",
|
|
8
|
+
"QBO_CLIENT_SECRET": "${env:QBO_CLIENT_SECRET}",
|
|
9
|
+
"QBO_REDIRECT_URI": "http://localhost:3000/callback",
|
|
10
|
+
"QBO_ENVIRONMENT": "sandbox"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|