account_groups_act
ChatGPTCreates, updates, or deletes chart-of-accounts groups. Resolve groupId from accounting_query or report context first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
accounting_act
ChatGPTCreates, updates, bulk-updates, bulk-enables/disables, or bulk-deletes chart-of-accounts entries. Account merge is intentionally not available here. Use accounting_query to resolve ids first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
accounting_query
ChatGPTReads the chart of accounts (per entity or across a workspace) and entity ledgers. Use operation to select the read mode. Do NOT create, edit, or merge accounts; use accounting_act. This is the primary classification surface when workspace.glFirstEnabled === true: resolve the GL accountId here (accounts_list) and the accountingLedgerId here (ledgers_get) to build accountOverrides for transactions_act.
activity_query
ChatGPTLists aggregated activity batches, raw audit logs, or drill-down details for one batch. Use operation to select the read mode. logs_list rows are compact: each diff carries the changed field and a human-readable valueLabel — use operation details_get for exact before/after values. On MCP the response is bounded: list returns the compact projectedRows view (no full rows); details_get returns compact detail rows (exact before/after values preserved; heavy resource snapshots omitted); grouped resourceIds/details are sampled (use count for the true per-group total); and source-id groups are paginated (limit/cursor). Output-contract semantics: total is the resource count (unchanged from the backend) while groupTotal is the number of source-id groups; a large ruleConditions[].value is replaced by a { truncated, valueType, chars, preview, digest } marker (full value is CLI-only). Keep responses small with per-operation levers: list/logs_list → filters.search, filters.resourceTypes, a date range, limit, cursor; details_get (default) → limit, changedFields, resourceType, sourceIds, search; grouped:true → sourceIds/actorId; groupBySourceId:true → resourceType/changedFields/limit/cursor (fields never shrinks details_get rows). Do NOT revert activity; use activity_undo.
activity_undo
ChatGPTReverts a supported activity batch identified from activity_query. Use activity_query (list then details_get) to show the human-readable date, source type, resource type, actor, changed fields, change types, and affected row count before confirmation. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
bills_create
ChatGPTCreate one or more accounts-payable bills in a workspace. Bills are stored with source "mcp" and are always opened (status OPEN). status must be draft or open; paid and void are rejected and are not a way to mark a bill paid. A negative total is rejected. Both the workspaceId and each bill's entityId are required. Resolve the workspace with context_browse or context_resolve, the numeric entityId with entities_query, and any counterpartyId (the vendor) with counterparties_query before calling. Each line may set its general-ledger accounts: accountOverrides (the expense/GL account) and accountsPayableOverrides (the AP account), each [{ accountingLedgerId, accountId }]; resolve accountId via accounting_query accounts_list and accountingLedgerId via accounting_query ledgers_get or context_resolve. When workspace.glFirstEnabled === true, set these so the bill books to the right GL accounts instead of uncategorized. Omit confirmationToken to receive a preview; show the entity, bill number, currency, line descriptions and amounts, then resend the same input with the returned confirmationToken to commit.
bills_update
ChatGPTEdit or remove MCP bills in a single batch. In upserts, each bill id is required and edits an existing MCP bill; create new bills with bills_create. Use idsToRemove to delete MCP bills. Only bills with source "mcp" can be changed. status must be draft or open; paid and void are rejected. A negative total is rejected. The workspaceId and each upsert's entityId are required. Resolve ids with context_browse or context_resolve, entities_query, and counterparties_query first. Each line may set accountOverrides (expense/GL account) and accountsPayableOverrides (AP account), each [{ accountingLedgerId, accountId }] resolved via accounting_query; set them when workspace.glFirstEnabled === true. Omit a line id to add a new line to an existing bill. Omit confirmationToken to preview the exact changes, then resend the same input with the returned confirmationToken to commit.
cash_items_act
ChatGPTRecords or soft-deletes checks and deposits. create accepts 1 to 50 mixed items, so one item is a single create. Amounts are positive. Each item has 1 to 100 splits that sum to its amount. delete accepts 1 to 50 cash item ids and uses reversible transaction deletion. Reconciled checks and deposits, and items that already have clearing evidence, are not deleted. A failed item does not undo a successful sibling. Omit confirmationToken to preview. Resend the same input with the returned confirmationToken to apply.
cash_items_query
ChatGPTLists checks and deposits for one workspace. status 'outstanding' returns items with no clearing evidence and no completed reconciliation. status 'reconciled' returns items included in a completed reconciliation. Amounts are signed: a check is negative and a deposit is positive. Query before creating or deleting.
catalog_items_act
ChatGPTCreates and manages catalog items for one entity. Operations: 'create' (find-or-create by name — MCP requires unitAmount), 'update' (edit; active:false archives), 'delete' (fails with 409 when referenced by an invoice), 'duplicate'. Prices are in USD — there is no currency field; the server always stores usd. Price create/archive/enable/delete/set-default/description edits are NOT separate operations — pass a prices array in 'update's payload (batched ops: {op:'create', clientId, unitAmount, isDefault?, description?} | {op:'update', priceId, active?, isDefault?, description?} | {op:'delete', priceId}); they commit atomically with the rest of the update, in one request, matching how the product's Save button persists everything at once. entityId is required on create/update. Resolve revenueAccountId/receivablesAccountId (accounting_query) and classIds (classes_query) only when the user names accounts or classes. Omit confirmationToken to preview (create says reuse-existing vs create-new); resend with the returned confirmationToken to apply. Write unitAmount in major currency units, not cents (10000 usd is $10,000.00). Do not send Stripe-style cents.
catalog_items_query
ChatGPTReads catalog items (invoice line items / products & services) for one entity. operation 'list' (default) browses items (name, active, default price, revenue account, invoice count); 'get' returns one item with its full price list. Every catalog item is a service (inventory items aren't supported yet). Catalog items are entity-scoped: resolve workspaceId + numeric entityId first (context_resolve / entities_query). Use these ids to compose a native invoice with native_invoices_act 'create'. unitAmount / defaultUnitAmount are major currency units, not minor units (10000 usd is $10,000.00). Use Formatted when reporting to the user; MinorUnits is the smallest-currency-unit integer for that currency (usd ×100, jpy ×1, kwd ×1000; read-only). Do not divide by 100.
categories_act
ChatGPTCreates, updates, or deletes workspace custom categories. Use categories_query to resolve categoryId and parentCategoryId first. A create requires payload.parentCategoryId and the parent must be top-level — nesting under a subcategory is rejected, so do not retry the same parent. A category's parent cannot be changed on update (parentCategoryId is create-only and rejected on update). Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply. Not available when workspace.glFirstEnabled === true: the category taxonomy does not drive classification there — manage the chart of accounts via accounting_act instead.
categories_query
ChatGPTLists, searches, and summarizes transaction categories. Use operation to select the read mode. Do NOT create or edit categories; use categories_act. For tracking classes use classes_query. When workspace.glFirstEnabled === true, categories do not drive classification — classify transactions by GL account via accounting_query + transactions_act accountOverrides instead.
chart_of_accounts_templates_act
ChatGPTCreates, updates, or deletes a chart of accounts template, or applies one to entities. create/update/apply take a payload; delete takes chartOfAccountsTemplateId only. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
chart_of_accounts_templates_query
ChatGPTReads an organization's chart of accounts templates. operation 'list' (default) browses templates; 'accounts' returns one template's groups and accounts; 'applied_entities' returns the entities it was applied to (look up names with entities_query). Read-only; use chart_of_accounts_templates_act to mutate.
chat_act
ChatGPTPosts to task chat. 'send_message' posts to a thread; 'reply_to_message' replies under a message (opens its subthread if needed); 'resolve_message' / 'unresolve_message' toggle a top-level message's resolved state. Every post MUST set visibility: 'external' (everyone in the workspace, including clients) or 'internal' (your organization only; needs organizationId). Replies under an internal message must stay internal to that message's organization. Optionally tag people (mentionUserIds from chat_query list_members), attach workspace documents (attachments: financialDocumentId from documents_query), and ask about transactions, counterparties, or report cells (references; needs taskId). Use chat_query to resolve ids first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
chat_query
ChatGPTReads task chat. operation 'list_threads' lists threads (one per task); 'list_messages' reads a thread (threadId) or the replies under a message (subthreadId), newest first, with each message's visibility (internal/external), resolved state, and tagged references; 'list_members' lists workspace members so you can pick userIds to tag. Pass organizationId to include your organization's internal messages. Do NOT post or resolve; use chat_act.
classes_act
ChatGPTCreates, updates, or deletes workspace tracking classes. Classes are plan-gated. Use classes_query to resolve classId and parentClassId first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
classes_query
ChatGPTLists, searches, summarizes, and inspects usage for tracking classes. Use operation to select the read mode. Classes are plan-gated. Do NOT create or edit classes; use classes_act. For categories use categories_query.
close_template_tasks_act
ChatGPTCreates, updates, deletes, or bulk-saves the tasks on a close template. Prefer bulk_save to add a whole checklist. type is restricted to the close-template UI set (transactions, question, profit_loss, balance_sheet, document_retrieval, get_documents, accrual_review, reconciliation, transaction_review, form_1099, counterparties, bills, invoices, financial_documents). viewConfig is a persistable view document (type, columns, filters) plus task extras — send the close-template-setup recipes, not a flat bag. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
close_templates_act
ChatGPTCreates, updates, duplicates, archives, unarchives, or deletes a close template. create/update take a payload (workspaceId is create-only); duplicate/archive/unarchive/delete take closeTemplateId only. Does NOT apply a template to a client, schedule, or preview — that stays in-app. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
close_templates_query
ChatGPTReads close templates in an organization. operation 'list' (default) browses templates with optional serviceIds, ownerIds, typeFilter (general | client_specific), and includeArchived filters; operation 'get' returns one template header joined with its task checklist (requires closeTemplateId). Read-only; use close_templates_act to mutate.
context_browse
ChatGPTLists accessible workspaces with their nested entities in one call. Most workflows should start here: call it first to orient before any workspace, entity, accounting, transaction, or reporting work. Takes no required input: call it with no arguments to see every workspace and entity you can access, including to confirm the current workspace. Use context_resolve instead when the user gives a specific name to match. Each workspace reports glFirstEnabled: when true, classify by GL account (accounting_query + transactions_act accountOverrides), not category.
context_resolve
ChatGPTResolves a workspace, entity, or ledger from a name or scope by composing search/list calls. Returns ranked candidates plus a single match when unambiguous. Workspace results include plan and isFree. isFree (billing signal, plan-agnostic): true when no active paid subscription (ACTIVE/TRIALING/PAST_DUE) exists on the billing that governs this workspace — the owning organization's billing when an organization covers it, otherwise the workspace's own. For an organization-covered workspace this can disagree with the workspace's Billing page, which reports any organization-covered workspace as subscribed. Paid MCP/agent tools are gated by the workspace's plan, not by isFree. Read the workspace's plan to anticipate paid tool availability. Member, chart-of-accounts account, and financial account selectors are not yet supported.
counterparties_act
ChatGPTCreates, updates, deletes, merges, or copies global counterparties into a workspace. Use counterparties_query to resolve ids first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
counterparties_query
ChatGPTLists and searches counterparties (payees, customers, vendors). Use operation: search with a search term to resolve a counterpartyId before editing. Do NOT create, merge, or delete counterparties; use counterparties_act.
documents_act
ChatGPTRequests a presigned upload URL, then confirms the upload to trigger document processing. Use request_upload first, upload the file with the returned URL, then call confirm_upload with the uploadToken.
documents_download
ChatGPTGets a temporary presigned download URL for a financial document by its numeric id. The URL expires after a few minutes.
documents_query
ChatGPTSearches financial documents and gets one document's metadata. Returns metadata only, not file bytes or download URLs; use documents_download for a temporary download URL. Do NOT upload, rename, or attach documents here.
documents_rename
ChatGPTRenames a financial document's display file name. Include the extension in fileName (for example Q1-statement.pdf). This does not change the stored file bytes. Use documents_query to resolve financialDocumentId first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
entities_act
ChatGPTCreates or updates entities, replaces an entity's address, or replaces its tax locations. Use entities_query to resolve entityId first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply. An entity name that matches an existing business entity in the workspace (ignoring case and surrounding whitespace) is rejected with a 409 conflict.
entities_query
ChatGPTLists and searches business entities across accessible workspaces (personal and mock entities are excluded), gets an entity's mailing address, or gets one entity's profile metadata. Do NOT create or edit entities; use entities_act.
financial_accounts_query
ChatGPTLists connected bank, card, and payment financial accounts across workspace entities, including safe connection health, statement-sync context, and feed sync diagnostics. TRIGGERS: 1) User asks which bank/card accounts are connected. 2) Support needs provider, connection error, feed freshness, initial sync, or last statement context. 3) The assistant needs financialAccountId filters for transaction or reconciliation workflows. EXCLUSIONS: Do NOT use for chart-of-accounts rows; use accounting_query. PARAMETER NOTES: Use search for institution, account name, mask, or entity name.
invoice_templates_query
ChatGPTReads Kick-native invoice templates for one entity. operation 'list' (default) browses active templates (name, customer, total, currency); operation 'get' returns the apply payload used to create a native draft (resolved latest customer, today + derived due date, fresh line ids, rebuilt email) — it persists nothing. Templates are entity-scoped: resolve workspaceId + numeric entityId first (context_resolve / entities_query). These are Kick-native invoices the customer receives by email — different from invoices_create (bookkeeping AR). Use native_invoices_act to create a draft and send it.
invoices_create
ChatGPTCreate one or more accounts-receivable invoices in a workspace. Invoices are stored with source "mcp" and are always opened (status OPEN). Currency must be usd; any other currency is rejected. status must be draft or open; paid, void, and uncollectible are rejected and are not a way to mark an invoice paid. A negative total is rejected. Both the workspaceId and each invoice's entityId are required. Resolve the workspace with context_browse or context_resolve, the numeric entityId with entities_query, and any counterpartyId with counterparties_query before calling. Each line may set its general-ledger accounts: accountOverrides (the income/GL account) and accountsReceivableOverrides (the AR account), each [{ accountingLedgerId, accountId }]; resolve accountId via accounting_query accounts_list and accountingLedgerId via accounting_query ledgers_get or context_resolve. When workspace.glFirstEnabled === true, set these so the invoice books to the right GL accounts instead of uncategorized. Omit confirmationToken to receive a preview; show the entity, invoice number, currency, line descriptions and amounts, then resend the same input with the returned confirmationToken to commit.
invoices_update
ChatGPTEdit or remove MCP invoices in a single batch. In upserts, each invoice id is required and edits an existing MCP invoice; create new invoices with invoices_create. Use idsToRemove to delete MCP invoices. Only invoices with source "mcp" can be changed. Currency must be usd; any other currency is rejected. status must be draft or open; paid, void, and uncollectible are rejected. A negative total is rejected. The workspaceId and each upsert's entityId are required. Resolve ids with context_browse or context_resolve, entities_query, and counterparties_query first. Each line may set accountOverrides (income/GL account) and accountsReceivableOverrides (AR account), each [{ accountingLedgerId, accountId }] resolved via accounting_query; set them when workspace.glFirstEnabled === true. Omit a line id to add a new line to an existing invoice. Omit confirmationToken to preview the exact changes, then resend the same input with the returned confirmationToken to commit.
journals_act
ChatGPTCreates, bulk-creates, updates, or deletes manual journal entries. Use journals_query to resolve journalEntryId first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
journals_query
ChatGPTLists manual journal entries for an entity (with paging via limit/cursor, search, and since/until date filters), or gets one journal entry by id. Use total and nextCursor to page large ledgers. Do NOT create, update, or delete journals; use journals_act.
list_kick_skills
ChatGPTList the available Kick skill guides. Skills document how to use Kick's tools — the right attributes, query syntax, and common pitfalls. Names are returned with a kick/ prefix (e.g. kick/transaction-review-and-categorization); pass that same value to load_kick_skill. Call this before load_kick_skill whenever you aren't already certain of the exact skill name; names aren't predictable from topic words. Pass query for a ranked fuzzy search across skill names and descriptions. Set includeHeader=true to get each skill's one-line summary and the Kick tools it covers alongside its name. Load skills proactively when you start work in a relevant Kick domain, not only after hitting an error.
load_kick_skill
ChatGPTLoad a Kick skill guide before working with the related tools — for example load kick/period-end-close-review before a close-readiness sweep, or kick/transaction-review-and-categorization before triaging transactions. Skills document the right attributes, query syntax, and pitfalls, so loading one first improves query quality and avoids common mistakes. Pass the name from list_kick_skills (the kick/ prefix is accepted; a bare name also works). If you don't already know the exact skill name, call list_kick_skills first — don't guess names from topic keywords. Set headerOnly=true to preview a skill's summary and the Kick tools it covers without loading the full guide.
native_invoices_act
ChatGPTCreates a Kick-native invoice DRAFT from a template ('create_from_template') and sends an existing native draft to the customer by email ('send'). This is a customer-facing Kick invoice (PDF, optional Stripe pay link) — NOT the bookkeeping AR row that invoices_create writes. 'create_from_template' does the template GET + map itself (do not assemble a render snapshot); 'send' emails a real person. Resolve workspaceId + numeric entityId + templateId with invoice_templates_query first. Combined 'create and send' is two confirms: create, then send the returned invoiceId — never create twice for one request. Omit confirmationToken to preview (the summary card shows To, amount, From, PDF, and collect-payment); resend the same input with the returned confirmationToken to apply.
native_invoices_query
ChatGPTReads Kick-native invoices (source MANUAL) the customer receives by email — NOT bookkeeping AR (use a bookkeeping tool for source: mcp / Stripe / importer rows). operation 'list' (default) browses invoices for the workspace (filter by entity, customer, status, invoice dates, search, overdue); 'get' returns one native invoice plus send-card fields (lines, email to/subject, collect payment, from, and a private app_url/links.app.url to the invoice's PDF preview page — login required, share only with the workspace's own users); 'stats' returns counts/totals for the same filters (stats totals are a raw cross-currency sum with no formatted label or minor-unit integer). Always resolves only MANUAL rows; a get of a non-MANUAL id is 404. Resolve workspaceId (context_resolve) first; entityId is required for 'get'. Preview html and pay-link tokens are never returned. Money fields (total, unitAmount, amount) are major currency units, not minor units: 10000 usd is $10,000.00. Report totalFormatted / amountFormatted to the user; *MinorUnits is the smallest-currency-unit integer for that currency (usd ×100, jpy ×1, kwd ×1000; read-only). Do not divide total by 100.
opening_balances_act
ChatGPTUpserts, bulk-sets, or removes opening balances for an entity. Use opening_balances_query and accounting_query to resolve ids first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
opening_balances_query
ChatGPTLists opening balances for an entity, or gets one account's opening balance. Do NOT set or remove opening balances; use opening_balances_act.
organization_clients_create
ChatGPTPreview and then create a client workspace inside an organization. Use when an accountant or firm owner asks to add a new client, and show organization, workspace name, entity name, plan, invited emails, and billing ownership before confirmation. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken.
organization_close_stages_act
ChatGPTCreates, renames, or repositions an organization close stage. create: { name, parentCloseStageId? }; update renames; reorder moves it via { parentCloseStageId, order }. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
organization_close_stages_query
ChatGPTLists an organization's close stages. Stages are org-wide (not per-template) and can nest via parentCloseStageId. Use to resolve the closeStageId set on close-template tasks. Read-only.
organization_members_query
ChatGPTLists members of an organization so an agent can resolve the numeric userId to use as a close-template ownerId or a task assigneeId. Read-only. Returns userId, name, email, and role. Use before close_templates_act (ownerId) or close_template_tasks_act (assigneeId); prefer assigneeRole over a guessed assigneeId.
organization_services_act
ChatGPTCreates an organization service tier. Use when a close template needs a serviceId that does not exist yet. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
organization_services_query
ChatGPTLists an organization's service tiers. Use to resolve the serviceId set on a close template. Read-only. Returns id and name.
reconciliation_query
ChatGPTReads reconciliation history, the current reconciliation summary, or blockers that would prevent undoing the last reconciliation. This tool never reconciles or removes anything.
report_settings_act
ChatGPTUpdates report settings of a workspace and its entities in one save; read current values with report_settings_query and entity ids with entities_query first. update takes a payload. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
report_settings_query
ChatGPTReads a workspace's report settings: each setting's value and where it comes from, for the workspace and its entities on every report. Returns baseline (the workspace's Report default), reports (settings a report changes from baseline) and entities (settings an entity changes, under default when the change covers all its reports, else under a report). A setting not listed takes the first value found in this order: the entity's report, the entity's default, the workspace's report, baseline. ar-aging-summary, ar-aging-detail and schedules have no rowVisibility. Read-only; use report_settings_act to mutate.
reports_query
ChatGPTRuns a financial report selected by report: profit_loss, balance_sheet, trial_balance, account_transactions, chart_of_accounts, expenses_by_vendor, cash_flow_statement, owner_cash_flow, or top_transactions. Put report-specific inputs in params. Dates are yyyy-MM-dd; ledgerId is a ledger UUID from accounting_query. Full reports (profit_loss, balance_sheet, cash_flow_statement, owner_cash_flow) return their whole body under data; if the response exceeds the output budget, narrow them with a shorter params.startDate–params.endDate, a coarser params.cycle (quarter/year), or params.maxDepth to collapse the account/category tree. List reports (trial_balance, account_transactions, chart_of_accounts, expenses_by_vendor, top_transactions) return paginated rows and support limit/fields/cursor; search is supported only on trial_balance.
revenue_recognition_apply
ChatGPTApplies and manages revenue recognition on invoices, customer payments, and manual sources for one entity. 'apply' puts one revenue policy on one invoice (optionally sourceLineIds), payment, or manual source (manualSourceLabel plus termStart; that date is the source date). Do not pass termStart for an invoice or payment: the tool reads the invoice date, or the payment's calendar date, and sends that. Pass specificDate when the policy anchors on one date. Pass ledgerId for an accrual ledger other than the primary. Pass overrides for a one-off component list or recognition account. Several components are allowed; at most one straight-line or daily pro-rata row. 'bulk_apply' applies one policy to 1-100 invoices or payments and reads each source date. A source that already has a different schedule is replaced when you confirm the preview. A source already on this policy is skipped. A matched invoice or payment that is already scheduled returns Skip or Cancel. 'remove' / 'bulk_remove' take recognitions off. 'change' re-spreads with a new amount (payment or manual source only; an invoice recognition follows its invoice total, so change that with invoices_update), term, start, component list, or recognition account. 'pause', 'resume', and 'stop' need effectiveDate; ask the user. There is no default. 'bulk_pause', 'bulk_resume', and 'bulk_stop' do the same for 1-100 recognitionIds with one date and, for stop, one choice; each recognition runs on its own, and refused ones come back in 'failed'. Find sources with revenue_recognition_query 'candidates' and recognitions with 'recognitions_list'. Omit confirmationToken to preview; resend the same input with the returned confirmationToken after the user approves. When the response is 'choice_required', show the options, ask the user, then resend the same input plus 'choice'. Never pick for the user. Applying posts journal entries now, including future months. Revenue only.
revenue_recognition_policies_act
ChatGPTCreates and manages revenue recognition policies for one entity. 'create' a deferred or accrued policy with a term, one or more components (straight_line, daily_pro_rata, or point_in_time, allocations summing to 100), a deferral account, and a different revenue account from this entity's accrual ledger (look them up with accounting_query). Mix methods in one policy, for example 50% point_in_time on a specific date and 50% point_in_time on the source date, or one straight_line row plus point_in_time rows. At most one straight_line or daily_pro_rata component: the term is stored once on the policy, so two over-time windows are rejected. 'update' changes only the fields you pass. 'archive' / 'restore' hide or bring back a policy. 'delete' works only for a policy never applied; otherwise it returns status 'choice_required' with Archive or Back. Omit confirmationToken to preview; resend the same input with the returned confirmationToken after the user approves. When the response is 'choice_required', show the options, ask the user, then resend the same input plus 'choice'. Never pick for the user. Revenue only.
revenue_recognition_query
ChatGPTReads revenue recognition for one entity on its accrual ledger. 'candidates' lists invoices and customer payments that look like they need revenue recognition and have none yet (signals: revenue_amount, memo, repeat_customer, invoice_term); a payment row names its matched invoiceId and an invoice row its paymentIds, and counterpartRecognition names the policy already on the other side so you apply once, not twice. 'report' returns a compact rollforward (beginning, additions, recognized, adjustments, ending) or waterfall (recognized and isPosted per period): totals plus one row per policy or customer; pass policyId or customerId to add individual recognition rows. 'policies_list' / 'policies_get' read every revenue policy in the workspace, including ones with no accounts for this entity yet (get adds components and this entity's deferral and revenue accounts, list adds the workspace-wide journalEntryCount and hasEntityAccounts, true when the policy has accrual accounts on this entity). 'recognitions_list' / 'recognitions_get' read recognitions already applied, filtered by policy, invoice, payment, customer, status, group, source type, class, period, or search. The row includes the recognition's own term. Get adds the policy accounts, the recognition split account, and every journal generation. 'report' can take ledgerId, entityIds, classes, and customer filters. Revenue only: prepaid-expense and fixed-asset policies are rejected. Amounts are major currency units ($12,000 is 12000). Lists page 25 rows by default (recognitions max 200, candidates max 100) with cursor / nextCursor. Use revenue_recognition_apply to apply or change, revenue_recognition_policies_act to manage policies.
rules_act
ChatGPTCreates, updates, reorders, annotates, or deletes transaction rules and rule groups. Use rules_query to resolve ruleId and groupId first. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
rules_query
ChatGPTLists rule groups, accounting defaults, normalized descriptions, and previews/inspects transactions matched or affected by rules. Use operation to select the read mode. Do NOT create or edit rules; use rules_act.
tasks_act
ChatGPTCreates question tasks, updates task fields, or deletes tasks. Use tasks_query to resolve taskId first. On update, description can only be set at create — description, descriptionType, messageId, and sticky are not updatable and are rejected if sent. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
tasks_query
ChatGPTReads tasks in a workspace. operation 'list' (default) lists tasks with optional status, assignee, entity, date, and search filters; operation 'read_comments' returns a task's chat/comment thread (newest-first, requires taskId). Do NOT create or update tasks; use tasks_act.
transactions_act
ChatGPTUpdates, bulk-updates, unsplits, splits, creates, or soft-deletes/restores transactions. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply. Permanent (hard) deletion is intentionally not available.
transactions_document_links_act
ChatGPTLinks a financial document to a transaction, or detaches an existing document match. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
transactions_query
ChatGPTFinds, inspects, summarizes, and discovers match candidates for financial transactions. Use operation to select the read mode. Do NOT mutate transactions; use transactions_act, transactions_transfer_matches_act, or transactions_document_links_act.
transactions_transfer_matches_act
ChatGPTMatches two transactions as a transfer pair, or removes an existing transfer match. Omit confirmationToken to preview, then resend the same input with the returned confirmationToken to apply.
account_groups_act
Claudeaccounting_act
Claudeaccounting_query
Claudeactivity_query
Claudeactivity_undo
Claudebills_create
Claudebills_update
Claudecategories_act
Claudecategories_query
Claudeclasses_act
Claudeclasses_query
Claudecontext_browse
Claudecontext_resolve
Claudecounterparties_act
Claudecounterparties_query
Claudedocuments_act
Claudedocuments_download
Claudedocuments_query
Claudeentities_act
Claudeentities_query
Claudefinancial_accounts_query
Claudeinvoices_create
Claudeinvoices_update
Claudejournals_act
Claudejournals_query
Claudelist_kick_skills
Claudeload_kick_skill
Claudeopening_balances_act
Claudeopening_balances_query
Claudeorganization_clients_create
Claudereports_query
Clauderules_act
Clauderules_query
Claudetasks_act
Claudetasks_query
Claudetransactions_act
Claudetransactions_document_links_act
Claudetransactions_query
Claudetransactions_transfer_matches_act
Claude