Skip to main content
Glama

What is BookMind?

BookMind is an open-source MCP server that brings intelligent bookkeeping to QuickBooks Online. Unlike Intuit's official MCP server (a raw API wrapper), BookMind is an intelligent bookkeeping layer — you speak naturally, it handles the rest.

Why BookMind?

Problem

Solution

Manual transaction categorization

Auto-categorize with 90%+ accuracy using learned rules + any LLM

Month-end close takes hours

One prompt → full close package (P&L, BS, CF, action items)

Bank reconciliation is tedious

Automatic fuzzy matching by amount, date, vendor

Duplicate payments slip through

Statistical anomaly detection catches them

Chasing overdue invoices

Professional emails in friendly/firm/escalation tones

Vendor research is slow

Natural language search: "What did we pay AWS last quarter?"

Locked into one AI provider

Works with OpenAI, Anthropic, Google, Groq, Mistral, NVIDIA, Ollama — or no provider at all

Architecture

QuickBooks Online  ──►  BookMind (this MCP)  ──►  Local SQLite
                              │
                    ┌─────────┼─────────┐
                    ▼         ▼         ▼
              Rules Engine  Memory    Anomaly Detector
  • Zero cloud dependency — your data stays in local SQLite

  • Learns from you — every correction becomes a persistent rule

  • Model-agnostic — works with 7+ LLM providers (or rules-only mode)

  • Agent-agnostic — works with Claude, Cursor, Cline, Continue, Windsurf, VS Code Copilot, Goose


Related MCP server: qbo-mcp

Install

One command (any MCP client)

npx @bbookmind/mcp

Pre-built configs

Agent

Config

Location

Claude Desktop

install/claude-desktop.json

%APPDATA%\Claude\claude_desktop_config.json (Windows)

Cursor

install/cursor.json

~/.cursor/mcp.json

Cline

install/cline.json

VS Code → Extensions → Cline → MCP

Continue

install/continue.json

~/.continue/config.json

Windsurf

install/windsurf.json

~/.codeium/windsurf/mcp_config.json

VS Code Copilot

install/vscode-copilot.json

VS Code → GitHub Copilot → MCP

Environment (optional)

BookMind runs in rules-only mode by default (no API key needed). To enable AI categorization, add one provider key:

# Pick ONE:
export GROQ_API_KEY=...        # Free tier available
export NVIDIA_API_KEY=...      # Free tier available
export GOOGLE_API_KEY=...      # Free tier available
export OPENAI_API_KEY=...
export ANTHROPIC_API_KEY=...
export MISTRAL_API_KEY=...
export OLLAMA_BASE_URL=http://localhost:11434

Tools

BookMind exposes 14 tools that your AI agent discovers automatically:

Category

Tool

Description

Categorization

bookmind.categorize

Auto-categorize uncategorized transactions

bookmind.approve_categorizations

Approve pending categorizations in batch

bookmind.reject_categorizations

Reject with feedback, auto-create rules

bookmind.undo_categorize

Rollback from audit log

Data

bookmind.fetch_transactions

Pull transactions, invoices, bills from QBO

bookmind.sync_to_qbo

Push approved changes back to QuickBooks

Reconciliation

bookmind.reconcile

Match bank feed ↔ invoices/bills

Intelligence

bookmind.anomalies

Duplicate, drift, outlier detection

bookmind.monthly_close

Full close package (P&L, BS, CF)

bookmind.vendor_search

Natural language vendor search

Communications

bookmind.chase_email

Overdue invoice email generator

Learning

bookmind.learn_rules

Create rules from user corrections

Multi-company

bookmind.select_company

Switch between QBO companies

bookmind.list_companies

List connected companies

Example prompts

"Categorize my uncategorized transactions from last month"
"Reconcile my bank feed against open invoices"
"Generate March close package"
"Any duplicate payments to vendors?"
"What did we pay AWS last quarter?"
"Draft friendly chase emails for invoices over 30 days overdue"
"Remember: Stripe transactions → Payment Processing Fees"
"Switch to Acme Corp company"

Pricing

Tier

Price

Transactions

Companies

Features

Free

$0

50/mo

1

Rules-only categorization, basic vendor search

Pro

$29/mo

1,000/mo

3

AI categorize, reconcile, anomalies, vendor search

Firm

$149/mo

Unlimited

Unlimited

Monthly close, chase emails, white-label PDFs, team seats

14-day Pro trial — no credit card required.


Development

git clone https://github.com/bbookmind/mcp
cd bookmind
npm install
npm run dev      # watch mode
npm run build    # production build
npm test         # vitest

Project structure

src/
├── index.ts                # MCP server entry
├── tools/                  # 14 bookkeeping tools
│   ├── categorize.ts
│   ├── approveCategories.ts
│   ├── rejectCategories.ts
│   ├── undoCategories.ts
│   ├── fetchTransactions.ts
│   ├── syncToQbo.ts
│   ├── reconcile.ts
│   ├── anomalies.ts
│   ├── monthlyClose.ts
│   ├── vendorSearch.ts
│   ├── chaseEmail.ts
│   ├── learnRules.ts
│   ├── selectCompany.ts
│   └── listCompanies.ts
└── lib/
    ├── qbo.ts              # QuickBooks OAuth + API client
    ├── db.ts               # SQLite schema + migrations
    └── llm.ts              # Multi-provider LLM interface

Distribution channels

  • npm: npx @bbookmind/mcp

  • MCP Registry: registry.modelcontextprotocol.io

  • Claude Marketplace: /plugin install bookmind

  • GitHub: github.com/bbookmind/mcp


License

MIT — free to use, modify, and distribute.


Support

Available Tools

14 tools
bookmind.anomaliesB

Statistical anomaly detection: duplicate payments (Map-based O(n)), vendor cost drift (>25%), IQR outliers, frequency spikes (>10/mo), round numbers (>=$100), large weekend transactions (>=$500). Returns flagged items with severity. Persists to SQLite for review.

ParametersJSON Schema
NameRequiredDescriptionDefault
rulesNo
min_amountNo
transactionsYes
lookback_daysNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses behavioral traits: persistence to SQLite, return of flagged items with severity, and detection thresholds. However, it does not mention whether the tool modifies input data, authentication requirements, or rate limits, which are gaps for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loading the main purpose and listing anomaly types in a single sentence. It is efficient but lacks structural elements like bullet points or sections that could improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (multiple anomaly types, persistence, 4 parameters, no output schema), the description is incomplete. It does not explain return format, how to interpret severity, or the role of required parameter 'transactions'. The tool likely needs more context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any parameters (rules, min_amount, transactions, lookback_days). It only describes detection logic, leaving the agent without context for how to set parameters or what values are valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it performs statistical anomaly detection and lists specific anomaly types (duplicate payments, vendor cost drift, etc.), clearly defining the tool's purpose. The verb 'detection' and resource 'anomalies' are specific, and it distinguishes from siblings like categorization or reconciliation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for detecting anomalies in transactions before review, but it does not explicitly state when to use this tool versus alternatives like 'approve_categorizations' or 'reconcile'. No exclusions or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.approve_categorizationsA

Approve pending categorization suggestions. Accepts transaction IDs or 'all' to approve everything pending. Approved transactions get status='categorized' and approved=1.

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_idsYesList of transaction IDs to approve, or ['all'] to approve all pending

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It explains the outcome (approved transactions get status='categorized' and approved=1) and the input format (IDs or 'all'). This adds value beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, front-loaded with the core purpose. Highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and no output schema. The description covers the effect and input format. Minor omission: no mention of error handling for invalid IDs, but overall complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a description for the single parameter, and the tool description repeats the same information ('Accepts transaction IDs or 'all''). With 100% schema coverage, the description adds no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Approve pending categorization suggestions') and specifies the effect on transactions (status='categorized', approved=1). It distinguishes from siblings like 'reject_categorizations' by focusing on approval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when there are pending categorization suggestions but does not explicitly state when to use this tool vs alternatives (e.g., reject_categorizations). No when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.categorizeA

Auto-categorize Uncategorized QuickBooks transactions using learned rules (regex) + keyword dict + LLM (when connected). Returns confidence-scored suggestions. Use bookmind.approve_categorizations to apply. New categorization requests stage in 'pending' status and follow approval workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
auto_applyNo
transactionsYes
confidence_thresholdNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool uses learned rules, keyword dictionary, and optionally LLM, and that results are staged in 'pending' status. This explains the non-destructive workflow and return of suggestions. However, it does not mention error handling or behavior when LLM is unavailable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each providing distinct value: core action, follow-up instruction, and workflow explanation. It is efficient with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers the core action and workflow but lacks detail on return format and parameter semantics. It does not describe the structure of the return suggestions or the behavior of auto_apply and confidence_threshold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does not explain the three parameters (auto_apply, transactions, confidence_threshold). The word 'confidence' appears only in 'confidence-scored suggestions', but no details on the threshold or auto_apply behavior. The description adds no meaning beyond parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool auto-categorizes uncategorized QuickBooks transactions using multiple methods (regex, keyword dict, LLM). It specifies that it returns confidence-scored suggestions and stages them in 'pending' status. This distinguishes it from sibling tools like bookmind.approve_categorizations and bookmind.fetch_transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly directs users to use bookmind.approve_categorizations to apply suggestions and mentions the approval workflow. It provides clear context for when to use this tool, but does not explicitly state when not to use it or compare to alternatives like bookmind.learn_rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.chase_emailA

Generate overdue invoice chase emails in friendly, firm, or escalation tone. Returns ready-to-send drafts.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNofriendly
invoicesYes
custom_messageNo

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full behavioral disclosure. It only states 'returns ready-to-send drafts' but omits side effects, permissions, or state changes, which is minimal for a tool generating drafts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundancy. Every word adds value: action, resource, tone, and output format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description hints at output (drafts) but lacks detail on return format, error conditions, or prerequisites like company selection. With 3 parameters and no annotations, the description is minimally adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 3 parameters. The description adds meaning for the tone parameter (lists the three tones) and relates invoices to overdue context, but does not cover the custom_message parameter or explain invoice fields. This offers marginal value but does not fully compensate for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Generate' and the resource 'overdue invoice chase emails' with tone options and output return. It distinguishes itself from siblings like categorize or reconcile which are unrelated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies clear usage context (overdue invoices and chase emails) without ambiguity, but does not provide explicit when-not or alternative tools. Given unique purpose, this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.fetch_transactionsA

Fetch transactions from QuickBooks Online for a date range. Returns normalized JSON array compatible with categorize, reconcile, anomalies, and monthly_close tools. Caches results in local SQLite.

ParametersJSON Schema
NameRequiredDescriptionDefault
billsNoAlso fetch bills for this period
fetchNoIf false, returns cached data only
end_dateYesEnd date YYYY-MM-DD
invoicesNoAlso fetch invoices for this period
start_dateYesStart date YYYY-MM-DD
max_resultsNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It mentions caching in SQLite, which is a key trait. However, it does not state whether the operation is read-only, whether authentication is required, or rate limits. It also does not describe what happens if the fetch fails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each adding value: first covers purpose and output, second covers caching behavior. No redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the output format as 'normalized JSON array' and notes compatibility with other tools. Caching behavior is described. However, it lacks detail on error handling or the structure of the returned data. For a tool with 6 parameters, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 83%, so the schema already explains most parameters. The description adds minimal additional meaning beyond 'returns cached data only' for the 'fetch' parameter. No new syntax or format details are provided for parameters like start_date and end_date.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (fetch), resource (transactions), and scope (date range from QuickBooks Online). It also specifies the output format as a normalized JSON array compatible with other tools, which gives context. However, it does not explicitly distinguish from sibling tools like 'sync_to_qbo' or 'chase_email'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when data is needed for downstream tools (categorize, reconcile, etc.) and mentions caching, which suggests repeated use. But it does not provide explicit when-to-use or when-not-to-use guidance, nor alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.learn_rulesC

Learn categorization rules from user corrections. Stores regex patterns. Rules apply to current company by default; set global=true to share across all companies under one account.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleYes
transactions_to_applyNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool stores regex patterns but does not disclose side effects, whether existing rules are overwritten, permission requirements, or any destructive behavior. The behavioral disclosure is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences, front-loading purpose and scope. However, given the complexity of the input schema, it sacrifices necessary detail for brevity, making it moderately effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With nested objects, multiple fields, and no output schema, the description fails to explain key aspects like the meaning of confidence, priority, or the transactions_to_apply array. It is incomplete for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description only mentions the 'global' parameter briefly. All other parameters (category, priority, account_id, confidence, vendor_pattern, description_pattern, transactions_to_apply) are left unexplained, leaving the agent unable to understand how to construct the input correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool learns categorization rules from user corrections and stores regex patterns. This distinguishes it from sibling tools like categorize or reject_categorizations, though it could be more specific about the learning process.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives guidance on scoping (default current company vs global), but lacks explicit when-to-use or when-not-to-use compared to alternatives. It provides some context without fully clarifying selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.list_companiesA

List all companies configured in BookMind, showing company ID, name, and association status. Allows OAuth connection for unconnected companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
oauth_urlNoIf true, returns OAuth auth URL to connect a new QBO company
company_idNoIf oauth_url is true, the company ID to connect

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It explains the read nature (listing) and the OAuth connection behavior, providing good transparency. However, explicitly stating 'read-only' would enhance clarity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: one for the main listing purpose, one for the OAuth feature. No redundancy, front-loaded with key purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the return fields (ID, name, association status) and the OAuth URL return. For a simple list tool with no output schema, this is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for each parameter. The description adds context by mentioning 'OAuth connection for unconnected companies,' which complements the schema without repeating it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all companies configured in BookMind' with specific details on output (ID, name, association status). It distinguishes from sibling tools like 'select_company' which selects the active company.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions allowing OAuth connection, which gives some usage context, but it does not explicitly state when to use this tool versus alternatives like 'select_company' or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.monthly_closeC

Generate complete monthly close package: P&L, Balance Sheet snapshot, Cash Flow, top vendors, expense breakdown, overdue AR, anomaly summary, and action items. Returns formatted markdown report.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYes
invoicesNo
anomaliesNo
transactionsYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description only lists output components and format, but does not disclose behavioral traits like side effects (likely read-only), whether it modifies data, required permissions, or rate limits. An agent cannot infer if this is a safe read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main purpose and a list of what's included. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters (2 required), no output schema, and no annotations, the description should provide context about required inputs (transactions and month) and optional ones (invoices, anomalies). It doesn't mention that transactions are expected to be already categorized, or that the tool assumes a certain state. Incomplete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explain any parameters. Month format, required vs optional inputs (transactions required, invoices and anomalies optional), and expected data structures are not elaborated. The description adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates a 'monthly close package' with specific components (P&L, Balance Sheet, etc.) and returns a 'formatted markdown report'. It distinguishes itself from sibling tools like bookmind.anomalies or bookmind.reconcile by being a comprehensive package.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. For example, if only anomalies are needed, the anomalies tool might be more appropriate. No prerequisites or context (e.g., need to have fetched transactions first) are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.reconcileA

Match bank feed transactions to invoices/bills by amount, date tolerance, and vendor similarity. Returns matched pairs and unmatched items. Score uses Levenshtein vendor similarity and weighted date/amount distance.

ParametersJSON Schema
NameRequiredDescriptionDefault
billsNo
invoicesNo
fee_toleranceNo
amount_toleranceNo
bank_transactionsYes
date_tolerance_daysNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

In the absence of annotations, the description discloses the matching algorithm (Levenshtein, weighted distance) and output types (matched pairs, unmatched items). However, it does not state whether the tool mutates data or is read-only, leaving some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, beginning with the purpose and followed by output and algorithm details. Every sentence adds value with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, no output schema, and no annotations, the description is partially complete: it explains the core functionality and scoring, but lacks details on parameter semantics, return format, and side effects, leaving gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions tolerances and vendor similarity but does not map to specific parameters like fee_tolerance or date_tolerance_days. With 0% schema coverage, the description should provide more detail, yet it only gives a high-level overview.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool matches bank feed transactions to invoices/bills, specifying criteria (amount, date tolerance, vendor similarity). It clearly distinguishes from sibling tools by focusing on reconciliation while siblings handle tasks like categorization or anomaly detection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for reconciliation but does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. No mention of prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.reject_categorizationsA

Reject pending categorization suggestions with feedback. Rejected transactions return to 'uncategorized'. Optional rule learning: set learn_rules=true and provide corrected_category, vendor_pattern, or description_pattern to auto-create a correction rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
learn_rulesNo
vendor_patternNo
transaction_idsYes
corrected_categoryNo
description_patternNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses core behavior (rejected transactions become uncategorized) and rule learning side effect, but lacks details on permanence, permissions, or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that efficiently convey purpose, effect, and optional feature with zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main action and optional behavior adequately given no output schema or annotations; missing return value and error details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning beyond schema by explaining how learn_rules works with corrected_category, vendor_pattern, and description_pattern; does not elaborate on reason or transaction_ids.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool rejects pending categorization suggestions, describes the effect (transactions return to 'uncategorized'), and distinguishes from siblings like approve_categorizations and undo_categorize.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for use (rejecting suggestions) and mentions optional rule learning, but does not explicitly contrast with sibling tools like approve or undo.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.select_companyA

Switch between connected QuickBooks companies. Sets the active company for all subsequent operations. Returns the current company info.

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idYesCompany ID to switch to. Use bookmind.list_companies to see available ones. Set to 'default' for single-company mode.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It transparently states that the tool switches the active company and returns company info. While it does not discuss side effects like invalidating caches or permission requirements, the behavior is simple and the disclosure is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences that front-load the primary action and purpose. No extraneous information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description fully covers what the tool does, the expected input, and the output type. It is complete for effective usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (company_id) with schema description coverage at 100%. The description adds extra meaning by explaining how to obtain valid IDs via list_companies and notes the special value 'default' for single-company mode, which goes beyond the JSON schema definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Switch between connected QuickBooks companies') and resource, and it specifies what it does ('Sets the active company for all subsequent operations. Returns the current company info.'). This distinguishes it from sibling tools like bookmind.anomalies or bookmind.categorize.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates that this tool should be used before other operations that depend on the active company, and the parameter description explicitly suggests using bookmind.list_companies to find company IDs. However, it does not provide explicit when-not-to-use guidance or list alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.sync_to_qboA

Push approved categorizations from local SQLite back to QuickBooks Online. Creates journal entries for category reclassifications. Only syncs approved (approved=1) transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_idsYesSpecific transaction IDs to sync, or ['all'] for all approved uncategorized transactions

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover behavioral traits. It discloses the creation of journal entries (mutation) and the approval filter, but does not mention idempotency, error handling, permissions, or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences that immediately convey the tool's purpose and key constraint. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a one-parameter tool with no output schema. Covers main action and parameter usage, but omits details on return values, error scenarios, and idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers the only parameter with a description, but the description adds value by explaining the special value ['all'] for all approved uncategorized transactions, going beyond the schema's generic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'push', the resource (approved categorizations from local SQLite to QuickBooks Online), and the specific action (creates journal entries). Differentiates from siblings like approve_categorizations and reject_categorizations by focusing on the sync step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage after approvals by stating 'Only syncs approved transactions', but lacks explicit when-not-to-use or alternative tools. Does not mention prerequisites like selecting a company or finalizing categorizations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmind.undo_categorizeA

Undo categorization changes on transactions. Restore previous category from audit log. Accepts transaction IDs or 'all' to undo all categorizations from today's session.

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_idsYesTransaction IDs to undo, or ['all'] to undo all today

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes the behavior: restoring previous category from audit log. No annotations provided, so description carries full burden. Lacks details on potential side effects or requirements, but adequately covers the primary action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no wasted words. Effectively summarizes the tool's function and usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity (1 parameter, no output schema), the description covers purpose and usage adequately. Missing return value details, but action is straightforward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the parameter description in schema matches the narrative description. No additional semantic value beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Undo' and resource 'categorization changes', clearly stating it restores previous categories from audit log. Differentiates from sibling tools like 'categorize' and 'approve_categorizations'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (to undo categorization changes) and how (by transaction IDs or 'all'). Does not explicitly mention when not to use or alternatives, but context from siblings makes it clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 14 tool updatesv1.0.1
    • First observedbookmind.anomalies
    • First observedbookmind.approve_categorizations
    • First observedbookmind.categorize
    • First observedbookmind.chase_email
    • First observedbookmind.fetch_transactions
    • First observedbookmind.learn_rules
    • First observedbookmind.list_companies
    • First observedbookmind.monthly_close
    • First observedbookmind.reconcile
    • First observedbookmind.reject_categorizations
    • First observedbookmind.select_company
    • First observedbookmind.sync_to_qbo
    • First observedbookmind.undo_categorize
    • First observedbookmind.vendor_search

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a distinct purpose with no overlap: categorization, approval, rejection, fetching, reconciliation, anomaly detection, reporting, etc. The workflow is clear and unambiguous.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., fetch_transactions, approve_categorizations), though 'monthly_close' and 'vendor_search' are noun_noun. Still, all are lowercase with underscores, making them predictable.

Tool Count5/5

14 tools cover a comprehensive bookkeeping workflow without being overwhelming. Each tool serves a clear need, and the count feels right for the domain.

Completeness5/5

The tool set covers the full lifecycle: fetching, categorizing (with approval), reconciliation, anomaly detection, monthly close, undo, sync, and search. Missing features like invoice creation are outside the stated scope.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server that enables AI agents to interact with QuickBooks Online accounts to manage invoices, customers, payments, and financial reports. It provides 20 tools to automate accounting workflows and retrieve financial data through natural language interfaces.
    -
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for QuickBooks Online providing read-only access to customers, vendors, invoices, bills, and chart of accounts. Enables natural language queries to your financial data through Claude or any MCP client.
    8
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server for KikoBooks enterprise bookkeeping software that enables AI assistants to perform accounting operations on accounts, customers, invoices, bills, and more through natural language.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Comprehensive MCP server for QuickBooks Online providing full CRUD operations on 29 entities (customers, invoices, bills, etc.) and 11 financial reports, enabling accounting data management via natural language.
    Apache 2.0

Latest Blog Posts

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/bbookmind/mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server