SuperBooks: Cleaning Up Bookkeeping
Tidies up SuperBooks transactions and receipts: categorizes or recategorizes transactions, fixes a transaction's category or status, finds uncategorized spending, matches receipts …
Alaeddin BENSALAH
@bsalaeddin
Install
$ openclaw skills install @bsalaeddin/superbooks-cleaning-up-bookkeepingBookkeeping cleanup in SuperBooks
Work through transactions that need a category or status, and connect receipts to the transactions they belong to. Every change is shown to the user before it is made.
Connecting and calling the tools
Every operation in this skill comes from the superbooks MCP server, the SuperBooks connector. The server defaults to Code Mode, so the operations below are written as the external_* functions you call inside superbooks:execute_typescript. On a server set to the per-tool surface, the same operation is listed as superbooks:<name> without the external_ prefix, for example superbooks:invoices_list.
- Only
superbooks:search_toolsandsuperbooks:execute_typescriptlisted (Code Mode, the default): callsuperbooks:search_toolsfirst, then call each tool insidesuperbooks:execute_typescriptasexternal_<tool>(for exampleexternal_invoices_list); the program mustreturnits result. Scopes, confirmations and gates are identical on both surfaces. - Operations listed by name: call them directly, for example
superbooks:invoices_list. - "Tool not found": switch to the Code Mode route instead of retrying the direct call. If
superbooks:search_toolsdoes not return the tool either, its OAuth scope was not granted; the user reconnects SuperBooks and approves that scope. - No
superbookstools at all: SuperBooks is not connected yet. Install the SuperBooks power, which adds the server; it signs in with OAuth on first use.
Tools you will use
The superbooks MCP server has two tools: superbooks:search_tools (call it first, for example with transaction, categor, inbox, to get the exact input shapes) and superbooks:execute_typescript (run a short program calling the declared external_* functions; the program must return its result).
If the connection lists the operations by name instead (the per-tool surface), call them directly without the external_ prefix.
Operations this skill uses:
external_transactions_list: transactions for a period (for examplefrom: "2026-09-01"), with amount, merchant andcategory_slug.external_transactions_get: one transaction in full.external_categories_list: the team's categories and their slugs.external_categories_createadds one the user asks for.external_transactions_update_category: set a transaction's category by slug.external_transactions_update_status: set a transaction's workflow status.external_tags_listandexternal_tags_create: labels the user may want.external_inbox_list: incoming receipts and bills waiting to be matched.external_inbox_match: attach an inbox item to a transaction.external_documents_search,external_documents_list,external_documents_get: receipts and documents already stored.
Workflow
- Agree the period (default: last calendar month). In one program, fetch
external_transactions_listfor it andexternal_categories_listwithawait Promise.all. - List the transactions that are uncategorized or that the user flagged. For each, propose a category slug from the category list, based on the merchant and amount.
- Show the proposals as a table (date, merchant, amount, current category, proposed category) and let the user approve all, some, or edit them.
- Apply the approved ones in one program: one
external_transactions_update_categorycall per transaction, each wrapped so one failure does not hide the others. Report what changed and what failed. - For receipts: fetch
external_inbox_list, pair each item with the transaction of the same amount and a close date, show the pairs, and applyexternal_inbox_matchfor the ones the user approves. - If a category the user wants does not exist, offer to create it with
external_categories_createfirst.
Code Mode pattern
const approved = [{ id: "txn_1", slug: "design_software" }];
const results = await Promise.all(
approved.map((t) =>
external_transactions_update_category({ id: t.id, category_slug: t.slug })
.then(() => ({ id: t.id, ok: true }))
.catch((e) => ({ id: t.id, error: String(e) })),
),
);
return results;
Check the real argument names in the superbooks:search_tools declaration before running this.
Rules
- No change without the user's approval of that specific change. Batches are fine once the user approves the batch.
- Never guess a category slug; use one returned by
external_categories_list. - Deleting transactions, receipts, or categories is not offered here. Destructive operations are off by default for the team; do not ask the user to turn them on.
- Each credential is limited to 120 calls a minute. For large batches, work in chunks of about 50 and report progress between them.
Top skills in this category
Stripe
@byungkyuStripe API integration with managed OAuth. This is a write-capable financial integration for customers, subscriptions, invoices, products, prices, and payments. Install only if you need Stripe administration. Connect with the least-privileged Stripe account and OAuth scopes available, verify the intended connection ID before each request, and revoke unused connections promptly. All write operations require explicit user approval showing the exact endpoint, target resource, object IDs, amounts, and test/live mode before execution. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI after `maton login`; the Stripe credential stays in the gateway and is never handled locally. Only your own Maton credential is used locally — held by the CLI, or supplied as `MATON_API_KEY` in the appendix fallback. Default to read and list calls, stay on the endpoints this skill documents, and confirm every write or new connection with the user. This file also documents the three constructs that turn a Stripe connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a Stripe action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with Stripe examples; they add no Stripe capability - Stripe is itself an event source, so its own events are in `references/stripe/triggers.md`, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).
xero
@byungkyuXero API integration with managed OAuth. Manage contacts, invoices, payments, accounts, and run financial reports. Use this skill when users want to interact with Xero accounting data. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a Xero connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a Xero action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with Xero examples; they add no Xero capability - Xero is not an event source, a trigger cannot read Xero data, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).
QuickBooks
@byungkyuQuickBooks API integration with managed OAuth. Install only if you need QuickBooks accounting administration. Connect with a least-privileged QuickBooks account, verify the intended connection ID before each request, and revoke unused connections promptly. This integration can mutate accounting records — approve only specific write actions after checking the exact endpoint, account, resource ID, amounts, and consequence. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a QuickBooks connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a QuickBooks action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with QuickBooks examples; they add no QuickBooks capability - QuickBooks is not an event source, a trigger cannot read QuickBooks data, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).
zoho-books
@byungkyuZoho Books API integration with managed OAuth. Manage invoices, contacts, bills, expenses, and other accounting data. Use this skill when users want to read, create, update, or delete invoices, contacts, bills, expenses, or other financial records in Zoho Books. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Requires network access and valid Maton API key. Calls run through the `maton` CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a Zoho Books connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a Zoho Books action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with Zoho Books examples; they add no Zoho Books capability - Zoho Books is not an event source, a trigger cannot read Zoho Books data, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).
Gog
@steipeteGoogle Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.