MCP App Store
by KeenEthics

Overview

Ask about your business. Get answers from your books. ProfitBooks does your bookkeeping from your bank statements — upload the PDFs and it reads, categorizes and keeps your books current. Connect it to your AI assistant and ask the questions you'd ask a bookkeeper sitting next to you, whenever you want. What can you do? • Understand your profit: See how the business is doing this month, whether you're more profitable than last year, and where the money is actually going. • Explore your financials: Get your profit and loss, balance sheet and cash flow for any period. • Watch your spending: Find out what you spent on software, subscriptions or a specific vendor, and which expenses grew the most. • Stay on top of your statements: Upload a bank statement right in the chat, check whether it has finished processing, and find missing months. • Clear your review queue: See which transactions need your review, and let your AI bookkeeper propose categories for you to confirm. Your data stays under your control Your assistant can only see the businesses, reports, transactions and statements available through your ProfitBooks account. It never sees your password or bank login. What to know Nothing changes in your books until you say so. When your assistant proposes categorizing or verifying transactions, or undoing a change, it shows a card, and only your Confirm click updates your books. It can also save a note you dictate about a group of transactions. It can't move money, change your settings or delete anything. Answers reflect the transactions you've verified so far. If a statement is missing or transactions are still under review, your assistant will tell you the numbers aren't final yet. Getting started Sign in with your ProfitBooks account and approve access once. Disconnect at any time from your assistant or ProfitBooks settings. New to ProfitBooks? Create an account at profitbooks.ai, upload a bank statement, and start asking. https://profitbooks.ai/guides/connect-your-ai-assistant/

Tools

about_profitbooks

ChatGPT
What ProfitBooks is and what this connection can read

cancel_proposal

ChatGPT
Called by the confirmation card when the user clicks Cancel.

confirm_books_start_year

ChatGPT
Saves the year a business's books start (January 1 of that year) during first-time setup, for a business whose statements gave no year.

confirm_business_name

ChatGPT
Saves the business name the user confirmed or typed during first-time setup. Each setup step is answered once; an answered step cannot be changed here.

confirm_industry

ChatGPT
Saves the industry the user picked during first-time setup and sets up the chart of accounts for it. Takes one industry handle (ind_…) from the industry suggestions.

confirm_proposal

ChatGPT
Called by the confirmation card when the user clicks Confirm.

get_account_summary

ChatGPT
A business's credit balance (ProfitBooks credit-based plans): credits available now, the free/purchased split, the daily free-credit window (size and reset cadence), and recent credit grants (credits and date only). Each processed transaction uses one credit, so categorization stops at a zero balance. A null free_credits_refreshed_at means the daily free window has not started yet; the next credit use starts it.

get_onboarding_status

ChatGPT
Reads which first-time setup step a business is on (its name, then its industry, then the date its books start) and the exact words for that step. A finished setup reads as done.

get_report_data

ChatGPT
Returns a report's rows for a date range, with a freshness flag. The business is given by name or handle and the report by type (e.g. profit_and_loss), name, or handle. Row items are keyed by line-item name; no internal ids are returned or accepted.

get_statement_status

ChatGPT
The bank statements a business has uploaded and each one's processing state (processed, still processing, failed, with the error when there is one), plus bank, account, covered period and imported-transaction counts. Each statement has a document_handle, which document takes to show that one statement. Newest first, recent statements only. Only document-first businesses have statements; for other businesses it returns applicable=false.

get_transaction_summary

ChatGPT
Live counts of a business's bank transactions: total, verified, and awaiting review (the same set as the Transactions page "Needs review" queue). For document-first businesses it also returns statement coverage: which months each bank account has statements for and which months are missing. Counts only, no financial amounts. Optional from/to (YYYY-MM-DD) restrict counts by transaction date.

get_upload_box

ChatGPT
Called by the statement upload box only.

list_businesses

ChatGPT
Lists the businesses the signed-in user manages, by name. Where two businesses share a name, each of them also has a detail that tells them apart and an opaque internal handle.

list_for_review

ChatGPT
Lists a business's unverified transactions, newest first. Each row has ready (whether it can be verified exactly as it stands) and blockers (why not): vendor_required, category_required, payment_processor_required, transfer_accounts_required and department_required mean it needs coding first; period_locked means the month is closed or locked; period_not_paid means the month is not unlocked yet (the user unlocks it in the app); type_locked means it is linked to a bill or invoice and is verified there; below_threshold means it is under the min_confidence passed; already_verified, excluded, excluded_card, unverify_in_progress, reconciliation_not_available, split_mismatch and fields_required are the other reasons. confidence is 0-100 (null when there is no score). Each row carries an opaque internal handle (txn_…).

list_reports

ChatGPT
Lists the reports the signed-in user can access for a business, given by name or handle. Each report has its name, type, and an opaque internal handle.

list_review_groups

ChatGPT
The transactions awaiting a business's review, grouped by description pattern and money direction (money out or money in). Each group gives count (all similar transactions), unverified_count (still open; the amount fields cover these), verified_count (already booked), total_amount, min_amount and max_amount (unsigned sizes), and transaction handles for the unverified rows; transaction_handles_truncated is true when the list is cut short. Per-row amounts are signed: money out is negative. Descriptions are exactly as the bank wrote them. Transactions with no description pattern are not grouped, and the number of groups is capped, so the group counts can be lower than the business's total awaiting review. A group stays listed after a note is saved on it.

list_transactions

ChatGPT
Searches a business's bank transactions by vendor name, amount (sign-agnostic exact or min/max range), transaction-date range, or free-text description, or aggregates them with group_by=vendor into per-vendor totals. Rows are capped; total_count gives how many matched. Row amounts are signed: money out is negative and money in is positive. Each row carries an opaque internal handle (txn_…).

propose_bulk_categorization

ChatGPT
Proposes categorizing a group of transactions to one category. It changes nothing: it returns a confirmation card, and only the user's Confirm click on that card categorizes and verifies the transactions. The result can include an action_block, which is the card for clients that show it as text. It can also return needs_vendor when a vendor is required first.

propose_create_category

ChatGPT
Proposes adding a new category (an account in the chart of accounts) with its account type and detail type, or under an existing category. It changes nothing: it returns a confirmation card, and only the user's Confirm click creates the category. One category per card. The result can include an action_block, which is the card for clients that show it as text.

propose_create_vendor

ChatGPT
Proposes adding a new vendor to My Vendors, by name only. It changes nothing: it returns a confirmation card, and only the user's Confirm click adds the vendor. One vendor per card. The result can include an action_block, which is the card for clients that show it as text.

propose_exclude

ChatGPT
Proposes keeping transactions out of the books: they leave the reports and the review queue, are not deleted, use no credits, and can be restored later. It changes nothing: it returns a confirmation card, and only the user's Confirm click excludes them. Pass exactly the unverified rows the user confirmed by description, date and amount; others come back in rows_not_ready with their reasons. The result can include an action_block, which is the card for clients that show it as text.

propose_recategorize

ChatGPT
Proposes moving transactions, booked or not, to another category. The transaction type follows from the category and whether money went out or came in, and the card shows each row's old and new category and type. It changes nothing: it returns a confirmation card, and only the user's Confirm click recategorizes the transactions and books them again. Booked transactions use no credits; unbooked ones are billed as a normal verify. Transactions that cannot take the change come back in rows_not_ready with their reasons. The result can include an action_block, which is the card for clients that show it as text.

propose_restore

ChatGPT
Proposes putting excluded transactions back into review, flagged if they were flagged and otherwise unverified, never straight to verified. It changes nothing: it returns a confirmation card, and only the user's Confirm click restores them. Restoring uses no credits. A transaction search with excluded true lists them. Only excluded transactions can be restored; others come back in rows_not_ready with their reasons. The result can include an action_block, which is the card for clients that show it as text.

propose_undo

ChatGPT
Proposes undoing the most recent categorization or verification the user confirmed in this chat. It changes nothing: it returns a confirmation card, and only the user's Confirm click reverses the work. Transactions edited since, or in a month closed since, are left as they are, so the undo can cover fewer rows than the original. The result can include an action_block, which is the card for clients that show it as text.

propose_unverify

ChatGPT
Proposes moving booked (verified) transactions back to review: they leave the books until they are verified again, keep their category and vendor, and use no credits. It changes nothing: it returns a confirmation card, and only the user's Confirm click unverifies them. Only verified transactions qualify; others come back in rows_not_ready with their reasons. The result can include an action_block, which is the card for clients that show it as text.

propose_verify

ChatGPT
Proposes verifying transactions as they are, with no category or vendor change. It changes nothing: it returns a confirmation card, and only the user's Confirm click verifies the transactions and uses the business's AI credits. Only transactions that are ready can be verified; others come back in rows_not_ready with their blockers. The result can include an action_block, which is the card for clients that show it as text.

resolve_category

ChatGPT
Matches a category name to one of the business's chart-of-account rows. Returns the exact match when there is one, otherwise the closest candidates by name, or no candidates. It does not create categories.

resolve_vendor

ChatGPT
Matches a vendor name to one of the business's vendors. Returns the exact match when there is one, otherwise the closest candidates by name, or no candidates. It does not create vendors.

save_transaction_note

ChatGPT
Saves the user's note about a group of transactions awaiting review. The note replaces any earlier note on each transaction, and the group is marked as answered. It does not categorize or verify anything.

start_statement_upload

ChatGPT
Called by the statement upload box only.

suggest_industries

ChatGPT
Suggests up to four industries for a business in first-time setup, from its statements and an optional description of the business. Each option has an industry handle (ind_…) and a name.

upload_statement

ChatGPT
Uploads a bank or credit card statement (PDF or photo) to ProfitBooks, which reads it and imports its transactions. Pass the file when the client provides the attached file; without a file, the chat shows an upload box where the user picks it. Uploading uses no credits.

about_profitbooks

Claude

get_account_summary

Claude

get_report_data

Claude

get_statement_status

Claude

get_transaction_summary

Claude

list_businesses

Claude

list_for_review

Claude

list_reports

Claude

list_review_groups

Claude

list_transactions

Claude

propose_bulk_categorization

Claude

propose_undo

Claude

propose_verify

Claude

resolve_category

Claude

resolve_vendor

Claude

save_transaction_note

Claude

upload_statement

Claude

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

Similar Apps