Tokenbooks - crypto and fiat accounting and payments
by tokenbooks.io · remote · no sign-in to list tools · v0.1.1 · published by io.tokenbooks
Crypto and fiat on one double-entry ledger: sync wallets, reconcile, cost basis, audit-ready close.
36 tools: 6 can delete or cancel things, 9 change things and 21 only read.
Scanned Oct 21, 2026
- Deletes or cancels6Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things9Claude Code: ask: see these tools
- Only reads21Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http tokenbooks https://api.tokenbooks.io/mcpFindings
Matches of fixed checks, with the text they matched.
- Infoget_server_info
The description mentions "credentials".
What this check looks forMatched text
description: "...at it deliberately leaves out. Needs no credentials, so call it first when evaluating a con..."
- Infolist_wallets
The description mentions "credentials".
What this check looks forMatched text
description: "...ages show whether to retry or reconnect credentials. EVM addresses are normalized; other ne..."
- Infoget_sync_status
The description mentions "credentials".
What this check looks forMatched text
description: "...tell you whether to retry or reconnect credentials."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
36 tools
Deletes or cancels 6Claude Code: deny
apply_accounting_rulesRe-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transactions; this destruct…No findings
Why it is in this group
- The name "apply_accounting_rules" says "apply": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transactions; this destructive bulk job ignores unsaved edits, so preview first, then track its requestId with get_request_status.
Annotations the server declares
- title: Apply Accounting Rules
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
edit_accounting_rulesCreate, update, enable/disable, reorder, or delete saved accounting rules -- the rule's whole authoring lifecycle.No findings
Why it is in this group
- The name "edit_accounting_rules" says "edit": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create, update, enable/disable, reorder, or delete saved accounting rules -- the rule's whole authoring lifecycle. Pass preview: true on any of those to see the impact without saving; use operation: current to preview the saved ruleset as it stands. Results report when a scan is truncated.
Annotations the server declares
- title: Edit Accounting Rules
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
full_resyncDANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this destructive reset and accepts the consequences; use incremental_sync for routine new activity.
Annotations the server declares
- title: Full Resync (DANGER — wipes & rebuilds history)
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
merge_transactionsDestructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then track the queued request…No findings
Why it is in this group
- The name "merge_transactions" says "merge": a word for a change that another call does not undo.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then track the queued requestId.
Annotations the server declares
- title: Merge Portfolio Transactions
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
reprocess_transactionRecalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompletion can return the…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompletion can return the final state.
Annotations the server declares
- title: Reprocess Portfolio Transaction
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
split_transactionsDestructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when the needed economic l…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when the needed economic legs already exist as operation handles. It cannot divide one transfer amount into new economic legs: repair sync normalization or use a supported persisted replacement lifecycle for a missing leg. Preview the grouping first, then track the queued requestId.
Annotations the server declares
- title: Split Portfolio Transaction
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
Changes things 9Claude Code: ask
add_walletAdd one or more blockchain addresses and start their first sync.No findings
Why it is in this group
- The name "add_wallet" says "add": a word for a change.
Description, as the server wrote it Add one or more blockchain addresses and start their first sync. Omit the blockchain connection identifier (integrationId) to add an EVM 0x address on every supported EVM network; other addresses require an integrationId. This tool does not configure exchange accounts and reports which addresses were added or skipped.
Annotations the server declares
- title: Add Wallet(s) to Portfolio
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
confirm_transactionPost a proposed accounting transaction to the books; this queued action returns a requestId.No findings
Why it is in this group
- The description's first verb is "post": a word for a change.
Description, as the server wrote it Post a proposed accounting transaction to the books; this queued action returns a requestId.
Annotations the server declares
- title: Confirm Portfolio Transaction
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
create_portfolioCreate an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity type, and timezone.No findings
Why it is in this group
- The name "create_portfolio" says "create": a word for a change.
Description, as the server wrote it Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity type, and timezone. If no jurisdiction is selected, Tokenbooks uses generic accounting defaults. Search help for policy choices; workspace creation remains in the Tokenbooks UI.
Annotations the server declares
- title: Create Portfolio
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
edit_transactionCreate manual source transactions (signed wallet movements; duplicate hashes refused; accounting asynchronous), or change one accounting transaction: memo/tags/type, journal lines …No findings
Why it is in this group
- The name "edit_transaction" says "edit": a word for a change.
Description, as the server wrote it Create manual source transactions (signed wallet movements; duplicate hashes refused; accounting asynchronous), or change one accounting transaction: memo/tags/type, journal lines or unit fair market value. Read line numbers/list_journal_line_assignment_options first. Track requestIds or waitForCompletion for fields/FMV edits.
Annotations the server declares
- title: Edit Transaction
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
import_adjustment_journalsPreview or post a complete CSV or XLSX file of balanced manual adjustment journals for one portfolio.No findings
Why it is in this group
- The name "import_adjustment_journals" says "import": a word for a change.
Description, as the server wrote it Preview or post a complete CSV or XLSX file of balanced manual adjustment journals for one portfolio. Preview first; post only after reviewing every blocking issue, then resend the unchanged source with its preview token and any resolutions.
Annotations the server declares
- title: Import Adjustment Journals
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
incremental_syncPull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when new activity is missi…No findings
Why it is in this group
- The name "incremental_sync" says "sync": a word for a change.
Description, as the server wrote it Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when new activity is missing, then track its requestId with get_request_status.
Annotations the server declares
- title: Incremental Sync
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
mark_token_spamMark or unmark a token as spam so unwanted dust or airdrops are excluded from accounting and existing records are updated; this queued action defaults to marking spam and returns a…No findings
Why it is in this group
- The name "mark_token_spam" says "mark": a word for a change.
Description, as the server wrote it Mark or unmark a token as spam so unwanted dust or airdrops are excluded from accounting and existing records are updated; this queued action defaults to marking spam and returns a requestId.
Annotations the server declares
- title: Mark Token as Spam
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
request_report_exportQueue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction export—for a reporting …No findings
Why it is in this group
- The name "request_report_export" says "request": a word for a change.
Description, as the server wrote it Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction export—for a reporting period; track the returned requestId with get_request_status.
Annotations the server declares
- title: Request Report Export
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
simulate_fiat_quoteEstimate exchange rates, processing fees, amount received, and corridor limits for a bank payout before sending money; use it to compare supported rails such as ACH, SEPA, EFT, FPS…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Estimate exchange rates, processing fees, amount received, and corridor limits for a bank payout before sending money; use it to compare supported rails such as ACH, SEPA, EFT, FPS, IMPS, or SWIFT.
Annotations the server declares
- title: Simulate Fiat Payout Quote
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 21Claude Code: allow
get_accounting_referenceLook up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use the returned exact val…No findings
Why it is in this group
- The name "get_accounting_reference" says "get": a word for reading.
Description, as the server wrote it Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use the returned exact values instead of guessing.
Annotations the server declares
- title: Get Accounting Reference
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_asset_positionSummarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals.No findings
Why it is in this group
- The name "get_asset_position" says "get": a word for reading.
Description, as the server wrote it Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wallet holdings rather than all ledger accounts; request a balance-sheet report for a complete accounting statement.
Annotations the server declares
- title: Get Asset Position
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_filter_optionsList the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query.No findings
Why it is in this group
- The name "get_filter_options" says "get": a word for reading.
Description, as the server wrote it List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query.
Annotations the server declares
- title: Get Filter Options
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_helpFind practical Tokenbooks instructions or accounting guidance.No findings
Why it is in this group
- The name "get_help" says "get": a word for reading.
Description, as the server wrote it Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins, ...), or pass slug to open one article directly using a slug from a previous get_help search result.
Annotations the server declares
- title: Get Help
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_journal_entryRead every debit and credit line in one journal entry—the detailed accounting record—and trace each line to its cost-basis records and blockchain movements.No findings
Why it is in this group
- The name "get_journal_entry" says "get": a word for reading.
Description, as the server wrote it Read every debit and credit line in one journal entry—the detailed accounting record—and trace each line to its cost-basis records and blockchain movements.
Annotations the server declares
- title: Get Journal Entry
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_lot_ledgerTrace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, accounting transaction, or …No findings
Why it is in this group
- The name "get_lot_ledger" says "get": a word for reading.
Description, as the server wrote it Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, accounting transaction, or date.
Annotations the server declares
- title: Get Cost-Basis Lot Ledger
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_portfolioRead one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type.No findings
Why it is in this group
- The name "get_portfolio" says "get": a word for reading.
Description, as the server wrote it Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType is omitted, it is unset.
Annotations the server declares
- title: Get Portfolio
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_portfolio_balancesCheck whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time, and an overall matc…No findings
Why it is in this group
- The name "get_portfolio_balances" says "get": a word for reading.
Description, as the server wrote it Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time, and an overall match flag.
Annotations the server declares
- title: Get Portfolio Balances
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_portfolio_issue_summarySummarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and errored transactions.No findings
Why it is in this group
- The name "get_portfolio_issue_summary" says "get": a word for reading.
Description, as the server wrote it Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and errored transactions.
Annotations the server declares
- title: Get Portfolio Issue Summary
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_request_statusCheck the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when it was queued.No findings
Why it is in this group
- The name "get_request_status" says "get": a word for reading.
Description, as the server wrote it Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when it was queued. Works for every request kind; there is no separate report-status tool.
Annotations the server declares
- title: Get Request Status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_server_infoLearn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and what each tier adds, …1 finding
Why it is in this group
- The name "get_server_info" says "get": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...at it deliberately leaves out. Needs no credentials, so call it first when evaluating a con..."
Description, as the server wrote it Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and what each tier adds, how to sign up, connection endpoint and authentication methods, and what it deliberately leaves out. Needs no credentials, so call it first when evaluating a connection, answering what Tokenbooks costs or includes, or debugging a connection.
Annotations the server declares
- title: Get Server Info
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_sync_statusCheck sync health across every wallet in a portfolio.1 finding
Why it is in this group
- The name "get_sync_status" says "get": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...tell you whether to retry or reconnect credentials."
Description, as the server wrote it Check sync health across every wallet in a portfolio. Current activity takes priority over each latest finished result; safe codes and messages tell you whether to retry or reconnect credentials.
Annotations the server declares
- title: Get Sync Status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_accounting_rulesFind saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule.No findings
Why it is in this group
- The name "list_accounting_rules" says "list": a word for reading.
Description, as the server wrote it Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule.
Annotations the server declares
- title: List Accounting Rules
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_chainsFind which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address can be added together…No findings
Why it is in this group
- The name "list_chains" says "list": a word for reading.
Description, as the server wrote it Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address can be added together with add_wallet.
Annotations the server declares
- title: List Supported Chains
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_journal_line_assignment_optionsFind the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounting entry line.No findings
Why it is in this group
- The name "list_journal_line_assignment_options" says "list": a word for reading.
Description, as the server wrote it Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounting entry line. Pass type to choose the lookup: ledger_account returns each account's accountNumber, counterparty returns the counterparty name, and responsibility_center returns its type key and center name.
Annotations the server declares
- title: List Journal Line Assignment Options
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_portfolio_transactionsFind accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, optionally attaching …No findings
Why it is in this group
- The name "list_portfolio_transactions" says "list": a word for reading.
Description, as the server wrote it Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, optionally attaching grouped contributing raw source records (10-record page cap). Pass transactionId to explain full details of one transaction instead: classification, journal entry, cost-basis links, and (rawWithDetails) its sanitized event logs and contract calls.
Annotations the server declares
- title: List Portfolio Transactions
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_portfoliosList portfolios available in a workspace, or search by name or slug.No findings
Why it is in this group
- The name "list_portfolios" says "list": a word for reading.
Description, as the server wrote it List portfolios available in a workspace, or search by name or slug.
Annotations the server declares
- title: List Portfolios
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_raw_transactionsFind compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity.No findings
Why it is in this group
- The name "list_raw_transactions" says "list": a word for reading.
Description, as the server wrote it Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show how one maps to wallet movements and accounting transactions; add includeDetails for its sanitized event logs and decoded contract calls (untrusted provider evidence).
Annotations the server declares
- title: List Raw Transactions
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_walletsList wallets in a portfolio with sync status and transaction counts.1 finding
Why it is in this group
- The name "list_wallets" says "list": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...ages show whether to retry or reconnect credentials. EVM addresses are normalized; other ne..."
Description, as the server wrote it List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show whether to retry or reconnect credentials. EVM addresses are normalized; other networks may be case-sensitive.
Annotations the server declares
- title: List Wallets
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_workspacesList workspaces available to the authenticated Tokenbooks user, or search by name or slug.No findings
Why it is in this group
- The name "list_workspaces" says "list": a word for reading.
Description, as the server wrote it List workspaces available to the authenticated Tokenbooks user, or search by name or slug.
Annotations the server declares
- title: List Workspaces
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
preview_transaction_classificationPreview how selected wallet movements would be grouped and labeled as accounting transactions.No findings
Why it is in this group
- The name "preview_transaction_classification" says "preview": a word for reading.
Description, as the server wrote it Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing.
Annotations the server declares
- title: Preview Transaction Classification
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http tokenbooks https://api.tokenbooks.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__tokenbooks__get_server_info",
"mcp__tokenbooks__get_accounting_reference",
"mcp__tokenbooks__list_workspaces",
"mcp__tokenbooks__list_portfolios",
"mcp__tokenbooks__get_portfolio",
"mcp__tokenbooks__get_portfolio_balances",
"mcp__tokenbooks__list_accounting_rules",
"mcp__tokenbooks__list_wallets",
"mcp__tokenbooks__list_journal_line_assignment_options",
"mcp__tokenbooks__get_sync_status",
"mcp__tokenbooks__list_portfolio_transactions",
"mcp__tokenbooks__list_raw_transactions",
"mcp__tokenbooks__get_filter_options",
"mcp__tokenbooks__get_portfolio_issue_summary",
"mcp__tokenbooks__preview_transaction_classification",
"mcp__tokenbooks__get_journal_entry",
"mcp__tokenbooks__get_lot_ledger",
"mcp__tokenbooks__get_request_status",
"mcp__tokenbooks__get_asset_position",
"mcp__tokenbooks__list_chains",
"mcp__tokenbooks__get_help"
],
"ask": [
"mcp__tokenbooks__edit_transaction",
"mcp__tokenbooks__import_adjustment_journals",
"mcp__tokenbooks__incremental_sync",
"mcp__tokenbooks__confirm_transaction",
"mcp__tokenbooks__mark_token_spam",
"mcp__tokenbooks__simulate_fiat_quote",
"mcp__tokenbooks__request_report_export",
"mcp__tokenbooks__add_wallet",
"mcp__tokenbooks__create_portfolio"
],
"deny": [
"mcp__tokenbooks__edit_accounting_rules",
"mcp__tokenbooks__apply_accounting_rules",
"mcp__tokenbooks__full_resync",
"mcp__tokenbooks__reprocess_transaction",
"mcp__tokenbooks__merge_transactions",
"mcp__tokenbooks__split_transactions"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as tokenbooks. Review it before you use it.