accueil / serveurs / Finance & Paiement / io.tokenbooks/tokenbooks
io.tokenbooks/tokenbooks
serveur MCP (Model Context Protocol) · tokenbooks 0.1.1
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.tokenbooks/tokenbooks est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.tokenbooks/tokenbooks » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 36 outils
- add_wallet≈ 504 tokens
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.
Paramètres, retour & exemple (3)
Paramètreswallets· array · requisportfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.
Exemple d'appel{"name": "add_wallet", "arguments": {"wallets": [], "portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"results": [], "syncQueued": true}} - apply_accounting_rules≈ 268 tokens
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.
Paramètres, retour & exemple (2)
ParamètresportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "apply_accounting_rules", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "texte", "requestId": "texte"}} - confirm_transaction≈ 476 tokens
Post a proposed accounting transaction to the books; this queued action returns a requestId.
Paramètres, retour & exemple (3)
ParamètresportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slugtransactionId· string · requis
Portfolio transaction ID
Exemple d'appel{"name": "confirm_transaction", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte", "transactionId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "status": "queued", "success": true, "requestId": "texte", "transactionId": "texte"}} - create_portfolio≈ 1028 tokens
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.
Paramètres, retour & exemple (11)
Paramètresname· string · requis
Portfolio namecurrency· string · optionnel
Functional currency (default USD)workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.legalEntityType· string · optionnel · CORPORATION | INDIVIDUAL | TRUST | PARTNERSHIP
Legal entity classification for an explicit country profilejurisdictionCode· string · optionnel
Exact assigned ISO country code, or custom. If omitted, resolves Custom regardless of currencyreportingTimezone· string · optionnel
Canonical IANA reporting timezone (default UTC)costBasisLotMethod· string · optionnel · FIFO | LIFO | HIFO | ACB
Lot-matching method for disposalscostBasisPerWallet· boolean · optionnel
Whether acquisition lots stay scoped to each walletstablecoinTreatment· string · optionnel · BASE | ASSET
Stablecoin valuation treatment; this does not change lot trackinggasFeeAccountingTreatment· string · optionnel · DISPOSAL_AND_COST_BASIS | EXPENSE_ONLY
Accounting treatment for gas spendfinancialReportingFramework· string · optionnel · TAX_ONLY | US_GAAP_PRE_2025 | US_GAAP_ASC350_60 | IFRS_IAS38 | IFRS_IAS38_REVAL | IFRS_IAS2_LCNRV | IFRS_IAS2_BROKER_TRADER_FVLCTS | ASPE
Financial reporting framework (default TAX_ONLY)
Exemple d'appel{"name": "create_portfolio", "arguments": {"name": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "slug": "texte", "currency": "texte", "createdAt": "texte", "updatedAt": "texte", "legalEntityType": "BUSINESS", "hasPostedActivity": true, "reportingTimezone": "texte", "accountingConfiguration": {}}} - edit_accounting_rules≈ 6130 tokens
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.
Paramètres, retour & exemple (11)
Paramètresname· string · optionnel
Human-readable rule name, shown in the rules list. Only for operation create, update; required for operation create.action· object · optionnel
Only for operation create, update; required for operation create.enabled· ? · optionnel
Whether the rule evaluates. A disabled rule is kept but never fires. Only for operation create, set_enabled; required for operation set_enabled.preview· boolean · optionnel
When true, evaluate the change and return its impact without saving it. Not for operation current.ruleRef· string · optionnel
Saved rule handle, from list_accounting_rules. Only for operation update, set_enabled, delete; required for each.operation· string · requis · create | update | set_enabled | reorder | delete | current
create: Create a new rule, or preview creating one (preview: true). update: Change the name, conditions, or actions of an existing rule, or preview the change (preview: true). Provide at least one of name, conditions, action. set_enabled: Turn an existing rule on or off without changing it, or preview the change (preview: true). reorder: Set the evaluation order of every rule in the portfolio, or preview it (preview: true). delete: Remove one saved rule from active use, or preview removing it (preview: true). current: Preview the saved rules as they stand, changing nothing.conditions· object · optionnel
Only for operation create, update; required for operation create.maxAffected· integer · optionnel
Preview only: how many affected transactions to sample, at most 25. affectedCount in the result equals this sample size; check candidateCount for the true total match count.portfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.orderedRuleRefs· array · optionnel
Every rule handle in the portfolio, in the order they should evaluate. Rules apply in order, so earlier rules win. Only for operation reorder; required for each.
Exemple d'appel{"name": "edit_accounting_rules", "arguments": {"operation": "create", "portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"mode": "sync", "jobId": "texte", "detail": "texte", "result": "texte", "status": "texte", "changes": [], "truncatedBy": "affected", "scannedCount": 1, "affectedCount": 1, "candidateCount": 1, "lastAffectedAt": "texte", "firstAffectedAt": "texte"}} - edit_transaction≈ 4626 tokens
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.
Paramètres, retour & exemple (22)
Paramètresmemo· string · optionnel
New memo; pass null to clear it Only for operation update_fields.tags· array · optionnel
Replace ALL tags. Only for operation update_fields.reason· string · optionnel
Immutable root reason whose nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references Only for operation set_fmv_override.wallet· object · optionnel
Only for operation create_manual; required for each.assetId· string · optionnel
Asset ID from read tools (e.g. eth_1). Only for operation set_fmv_override; required for each.subType· string · optionnel
New operation sub-type (requires operationType) Only for operation update_fields.operation· string · requis · create_manual | update_fields | update_journal_line | set_fmv_override
create_manual: Create manual sources. update_fields: Edit memo/tags/type. update_journal_line: Assign journal line. set_fmv_override: Override unit FMV.timeoutMs· integer · optionnel
Wait ms; default 30000. Only for operation update_fields, set_fmv_override.lineNumber· integer · optionnel
Journal entry line number (1-based) Only for operation update_journal_line; required for each.quoteSource· string · optionnel
Price source/reason. Only for operation set_fmv_override.portfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.transactions· array · optionnel
valueQuote: signed TOTAL FMV, not unit price Only for operation create_manual; required for each.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.accountNumber· string · optionnel
Account number from list_journal_line_assignment_options (ledger_account). Only for operation update_journal_line.newValueQuote· string · optionnel
Exact unit price in base currency. Only for operation set_fmv_override; required for each.operationType· string · optionnel · DEPOSIT_FIAT | INCOME | REFUND | REBATE | WITHDRAWAL_FIAT | EXPENSE | BUY | SELL
New accounting operation type Only for operation update_fields.quoteCurrency· string · optionnel
Currency; default base currency. Only for operation set_fmv_override.transactionId· string · optionnel
Portfolio transaction ID Only for operation update_fields, update_journal_line, set_fmv_override; required for each.pollIntervalMs· integer · optionnel
Poll ms; default 500. Only for operation update_fields, set_fmv_override.counterpartyName· string · optionnel
Counterparty name to assign; pass null to unset Only for operation update_journal_line.waitForCompletion· boolean · optionnel
Wait for final state. Only for operation update_fields, set_fmv_override.responsibilityCenterAssignments· array · optionnel
Replace assignments, one per dimension; [] clears all. Keys/names: list_journal_line_assignment_options (responsibility_center). Only for operation update_journal_line.
Exemple d'appel{"name": "edit_transaction", "arguments": {"operation": "create_manual", "portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "failed": [], "status": "queued", "created": [], "results": [], "skipped": [], "success": true, "replaced": [], "requests": "texte", "statuses": [], "completed": true, "operation": "create_manual"}} - full_resync≈ 374 tokens
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.
Paramètres, retour & exemple (3)
Paramètreswallets· array · optionnel
Optional exact wallet pairs; omit to wipe and rebuild every wallet in the portfolioportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "full_resync", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"requestId": "texte", "portfolioSlug": "texte"}} - get_accounting_reference≈ 414 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_accounting_reference", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"operationTypes": [], "costBasisLotMethods": [], "transactionStatuses": [], "costBasisLotEntryKinds": []}} - get_asset_position≈ 623 tokens
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.
Paramètres, retour & exemple (4)
ParamètresassetRef· string · requis
Asset symbol or canonical asset idincludeSpam· boolean · optionnel
Also match assets marked as spamportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "get_asset_position", "arguments": {"assetRef": "texte", "portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"asset": {}, "totals": {}, "currency": "texte", "pricedAt": "texte", "perWallet": [], "unitPrice": "texte", "valuation": {}}} - get_filter_options≈ 11503 tokens
List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query.
Paramètres, retour & exemple (10)
Paramètresmode· string · optionnel · from | to
Address side to inspect for portfolio-transaction-addresses. Required for address filters. Use from for source addresses and to for destination addresses. Only for filterName portfolio-transaction-addresses; required for each.filter· string · optionnel
Human-readable Portfolio Transactions filter expression. Only for filterName portfolio-transaction-status-counts.search· string · optionnel
Optional case-insensitive text search applied by the provider to labels, addresses, names, or other provider-owned searchable fields. Not for filterName accounts, portfolio-transaction-period.pageSize· integer · optionnel
Requested number of resources to return. Oversized values are clamped to the route limit. Not for filterName accounts, portfolio-transaction-period.selected· ? · optionnel
Already-selected option values for selected-value hydration from URL filter state. A single HTTP query value is accepted as a one-element array. Not for filterName accounts, portfolio-transaction-period.pageToken· string · optionnel
Opaque token returned by the previous list response. Not for filterName accounts, portfolio-transaction-period.filterName· string · requis · portfolio-transaction-addresses | portfolio-transaction-account-name | portfolio-transaction-assets | portfolio-transaction-counterparties | portfolio-transaction-wallets | portfolio-transaction-responsibility-centers | portfolio-transaction-lot-presence | portfolio-transaction-journal-entry-presence
Public filter option provider name.reportType· string · optionnel · profit-and-loss | income-expense
Count effective counterparties from this report, including address matches. Omit to count stored journal assignments for portfolio transactions. Only for filterName portfolio-transaction-counterparties.portfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.
Exemple d'appel{"name": "get_filter_options", "arguments": {"filterName": "portfolio-transaction-addresses", "portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": "texte", "assets": [], "period": {}, "origins": [], "wallets": [], "statuses": [], "subTypes": [], "hierarchy": [], "currencies": [], "pagination": "texte", "cacheStatus": "hit", "accountTypes": []}} - get_help≈ 937 tokens
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.
Paramètres, retour & exemple (3)
Paramètresslug· string · optionnel
Help article slug to open directly, from a previous get_help search result. Omit when using query.limit· ? · optionnel
Maximum number of search results, only used with queryquery· string · optionnel
Search query for Tokenbooks instructions or accounting guidance. Omit when using slug.
Exemple d'appel{"name": "get_help", "arguments": {"slug": "texte", "limit": "texte", "query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"body": "texte", "slug": "texte", "tags": [], "error": "texte", "query": "texte", "title": "texte", "message": "texte", "results": [], "summary": "texte", "audience": "user", "relatedTools": [], "relatedConcepts": []}} - get_journal_entry≈ 1608 tokens
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.
Paramètres, retour & exemple (3)
ParamètresportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slugjournalEntryId· string · requis
Journal entry ID
Exemple d'appel{"name": "get_journal_entry", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte", "journalEntryId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "memo": "texte", "lines": [], "status": "texte", "subType": "texte", "timestamp": "texte", "systemNotes": "texte", "isAdjustment": true, "operationType": "texte", "portfolioTransactionId": "texte", "adjustmentJournalImportProvenance": {}}} - get_lot_ledger≈ 1478 tokens
Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, accounting transaction, or date.
Paramètres, retour & exemple (13)
Paramètrespage· integer · optionnel
Page number, starting at 1sort· string · optionnel
Single public sort field. Prefix with - for descending. Supported fields: timestamp, diff, value, pricelimit· ? · optionnel
Maximum items to return, maximum 100. Preferred MCP pagination field.filter· string · optionnel
Public AIP-160 filter string. Supported fields: id lot identifier (=, !=, in, not in), entry_id ledger-row identifier (=, !=, in, not in), asset_id (=, !=, in, not in), asset_spam (= true or false), entry_kind (=, !=, in, not in), wallet (=, !=, in, not in using chainId:address), portfolio_transaction_id (=, !=, in, not in), timestamp (=, !=, >, >=, <, <= with ISO datetimes). The asset display name is not filterable.toDate· string · optionnel
Optional ISO timestamp upper boundchainId· string · optionnel
Exact chain ID when filtering to one wallet; requires walletAddressassetRef· string · optionnel
Deprecated compatibility selector for asset symbol or asset id. Prefer filter=asset_id.fromDate· string · optionnel
Optional ISO timestamp lower boundpageSize· ? · optionnel
Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls.entryKind· array · optionnel
Filter by lot entry kind (any of)portfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slugwalletAddress· string · optionnel
Exact case-sensitive wallet address when filtering to one wallet; requires chainId
Exemple d'appel{"name": "get_lot_ledger", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}}} - get_portfolio≈ 621 tokens
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.
Paramètres, retour & exemple (2)
ParamètresportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "get_portfolio", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "slug": "texte", "currency": "texte", "createdAt": "texte", "updatedAt": "texte", "legalEntityType": "BUSINESS", "hasPostedActivity": true, "reportingTimezone": "texte", "accountingConfiguration": {}}} - get_portfolio_balances≈ 345 tokens
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.
Paramètres, retour & exemple (2)
ParamètresportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "get_portfolio_balances", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "allBalancesMatch": true}} - get_portfolio_issue_summary≈ 921 tokens
Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and errored transactions.
Paramètres, retour & exemple (2)
ParamètresportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "get_portfolio_issue_summary", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"counts": {}, "isClean": true, "samples": {}, "errorsByType": []}} - get_request_status≈ 11380 tokens
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.
Paramètres, retour & exemple (4)
ParamètresrequestId· string · requis
Request ID returned by the call that queued the work (e.g. incremental_sync, full_resync, request_report_export)portfolioRef· string · optionnel
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slugtransactionId· string · optionnel
Optional transaction ID that caused the async request, for agent context
Exemple d'appel{"name": "get_request_status", "arguments": {"requestId": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"kind": "job", "type": "sync", "error": "texte", "result": "texte", "status": "pending", "outcome": {}, "subject": {}, "progress": 1, "createdAt": "texte", "requestId": "texte", "updatedAt": "texte", "finishedOn": 1}} - get_server_info≈ 714 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_server_info", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "notes": [], "title": "texte", "pricing": {}, "summary": "texte", "coverage": {}, "endpoint": "texte", "limitations": [], "authentication": [], "gettingStarted": {}, "documentationUrl": "texte"}} - get_sync_status≈ 875 tokens
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.
Paramètres, retour & exemple (2)
ParamètresportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "get_sync_status", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "pending", "wallets": [], "startedAt": "texte", "updatedAt": "texte", "completedAt": "texte"}} - import_adjustment_journals≈ 4033 tokens
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.
Paramètres, retour & exemple (7)
Paramètresaction· string · requis · preview | post
preview: Parse the file and report what it would import, writing nothing. Always preview before posting. post: Commit the import that a preview of the same file produced.fileName· string · requis
Original CSV or XLSX source filename.resolutions· array · optionnel
Only for action post; required for each.portfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.previewToken· string · optionnel
Token returned by the matching preview, proving the file has not changed since. Only for action post; required for each.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.contentBase64· string · requis
CSV or XLSX source file content as base64-encoded bytes (max 5 MiB).
Exemple d'appel{"name": "import_adjustment_journals", "arguments": {"action": "preview", "fileName": "texte", "portfolioRef": "texte", "workspaceRef": "texte", "contentBase64": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"action": "preview", "issues": "texte", "summary": "texte", "journals": "texte", "importRef": "texte", "readyToPost": true, "previewToken": "texte", "createdJournalCount": 1, "omittedJournalCount": 1}} - incremental_sync≈ 352 tokens
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.
Paramètres, retour & exemple (3)
Paramètreswallets· array · optionnel
Optional exact wallet pairs; omit to sync every wallet in the portfolioportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "incremental_sync", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"requestId": "texte", "portfolioSlug": "texte"}} - list_accounting_rules≈ 3504 tokens
Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule.
Paramètres, retour & exemple (13)
Paramètreslimit· integer · optionnel
Requested number of resources to return. Oversized values are clamped to the route limit.search· string · optionnel
Free-text match against rule names.enabled· boolean · optionnel
Keep only enabled rules, or only disabled ones. Omit to return both.ruleRef· string · optionnel
Saved rule handle, from list_accounting_rules.wallets· array · optionnel
Wallet selectors as chainId:walletAddress values.assetIds· array · optionnel
Asset ids as CSV or repeated query values.pageToken· string · optionnel
Opaque token returned by the previous list response.actionTypes· array · optionnel
Action types as CSV or repeated query values.portfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.accountNumbers· array · optionnel
Ledger account numbers as CSV or repeated query values.conditionFields· array · optionnel
Condition fields as CSV or repeated query values.counterpartyNames· array · optionnel
Counterparty names as CSV or repeated query values.
Exemple d'appel{"name": "list_accounting_rules", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}}} - list_chains≈ 309 tokens
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.
Paramètres, retour & exemple (2)
Paramètresquery· string · optionnel
Optional chain name, slug, or EVM chain id (e.g. "Optimism", "optimism-mainnet", "10")evmOnly· boolean · optionnel
When true, return only EVM-compatible chains
Exemple d'appel{"name": "list_chains", "arguments": {"query": "texte", "evmOnly": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": []}} - list_journal_line_assignment_options≈ 1073 tokens
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.
Paramètres, retour & exemple (7)
Paramètrespage· integer · optionnel
Page number, starting at 1 Only for type counterparty.type· string · requis · ledger_account | counterparty | responsibility_center
ledger_account: Ledger accounts assignable to a journal line. counterparty: Saved vendors, people, or organizations assignable to a journal line. responsibility_center: Departments, projects, or other reporting groups (responsibility centers) assignable to a journal line.limit· integer · optionnel
Maximum items to return, maximum 100. Preferred MCP pagination field. Only for type counterparty.search· string · optionnel
Filter by name (also matches account number for ledger accounts)pageSize· integer · optionnel
Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls. Only for type counterparty.portfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.
Exemple d'appel{"name": "list_journal_line_assignment_options", "arguments": {"type": "ledger_account", "portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"type": "ledger_account", "total": 1, "hasMore": true, "accounts": [], "counterparties": [], "responsibilityCenters": []}} - list_portfolio_transactions≈ 7966 tokens
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.
Paramètres, retour & exemple (31)
Paramètressort· string · optionnel · timestamp | -timestamp
Timestamp sort. Prefix with - for descending order.limit· ? · optionnel
Maximum Portfolio Transactions to return, maximum 100.isSpam· boolean · optionnel
true: transfers involve spam tokens; false: non-spam onlysearch· string · optionnel
Free-text search over memo, tx hash, transaction IDstatus· array · optionnel
Filter by status, e.g. ["POSTED"]toDate· ? · optionnel
Optional ISO timestamp upper boundtxHash· string · optionnel
Filter by exact on-chain transaction hashaddress· string · optionnel
Match transfer from/to address (case-insensitive)chainId· string · optionnel
Public wallet chain ID.hasLots· boolean · optionnel
true: produced cost-basis lots; false: did notinclude· string · optionnel · raw | rawWithDetails
Include grouped contributing raw source transactions; rawWithDetails adds sanitized provider details and requires transactionIdsubType· array · optionnel
Filter by operation sub-type (case-insensitive)chainIds· array · optionnel
Optional chain ID filtersfromDate· ? · optionnel
Optional ISO timestamp lower boundhasError· boolean · optionnel
true: has a processing error; false: error-freemaxValue· string · optionnel
Maximum transfer fiat quote value (inclusive), as a decimal stringminValue· string · optionnel
Minimum transfer fiat quote value (inclusive), as a decimal stringassetRefs· array · optionnel
Filter by asset symbol (case-insensitive)errorType· array · optionnel
Filter by error/warning code, e.g. ["FmvNotAvailable"]pageToken· string · optionnel
Opaque token returned by the previous list response.counterparty· array · optionnel
Filter by counterparty name (case-insensitive)portfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.operationType· array · optionnel
Filter by operation type, e.g. ["UNCATEGORIZED"]transactionId· string · optionnel
Look up one transaction by handle instead of listingwalletAddress· string · optionnel
Public wallet address on the selected chain.defiPositionKey· string · optionnel
Filter by protocol-defined DeFi position keyhasJournalEntry· boolean · optionnel
true: has a non-empty journal entry; false: does notdefiPositionWalletAddress· string · optionnel
Filter by DeFi position wallet addressdefiPositionWalletChainId· string · optionnel
Filter by DeFi position wallet chain IDresponsibilityCenterTypeKeys· array · optionnel
Filter by journal-line responsibility-center type key (e.g. primary, goal; from list_journal_line_assignment_options)
Exemple d'appel{"name": "list_portfolio_transactions", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "data": [], "memo": "texte", "tags": [], "status": "texte", "subType": "texte", "timestamp": "texte", "pagination": {}, "resultType": "transactionList", "systemNotes": "texte", "errorDetails": [], "errorMessage": "texte"}} - list_portfolios≈ 767 tokens
List portfolios available in a workspace, or search by name or slug.
Paramètres, retour & exemple (5)
Paramètrespage· integer · optionnel
Page number, starting at 1limit· ? · optionnel
Maximum items to return, maximum 100. Preferred MCP pagination field.query· string · optionnel
Optional portfolio name or slug search querypageSize· ? · optionnel
Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls.workspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "list_portfolios", "arguments": {"workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}}} - list_raw_transactions≈ 2797 tokens
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).
Paramètres, retour & exemple (15)
Paramètressort· string · optionnel · timestamp | -timestamp
Timestamp order. Use timestamp for ascending or -timestamp for descending; defaults to -timestamp.limit· ? · optionnel
Maximum raw transaction summaries to return, maximum 100.toDate· ? · optionnel
Latest transaction timestamp to include, as an ISO 8601 datetime.txHash· string · optionnel
Exact on-chain transaction hash.chainId· string · optionnel
Blockchain to filter by, such as eth-mainnet. Call list_chains for the supported set.chainIds· array · optionnel
Blockchains to filter by, such as eth-mainnet. Call list_chains for the supported set.fromDate· ? · optionnel
Earliest transaction timestamp to include, as an ISO 8601 datetime.pageToken· string · optionnel
Opaque token returned by the previous list response.portfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.walletAddress· string · optionnel
Wallet to filter by. Supply chainId alongside it.includeDetails· boolean · optionnel
With rawTransactionId, also return blockchain event logs and decoded contract callsprocessingState· string · optionnel · PROCESSED | PARTIAL | UNPROCESSED
Keep only source transactions in this processing state.rawTransactionId· string · optionnel
Look up one source transaction by handle instead of listingincludeSpamTokens· boolean · optionnel
Include transactions whose operations contain only spam tokens; defaults to false.
Exemple d'appel{"name": "list_raw_transactions", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "data": [], "hash": "texte", "memo": "texte", "wallet": {}, "details": "texte", "timestamp": "texte", "pagination": {}, "resultType": "rawTransactionList", "blockHeight": "texte", "processingState": "PROCESSED", "walletOperations": []}} - list_wallets≈ 2156 tokens
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.
Paramètres, retour & exemple (7)
Paramètrespage· integer · optionnel
Page number, starting at 1limit· ? · optionnel
Maximum items to return, maximum 100. Preferred MCP pagination field.chainId· string · optionnel
Optional chain filter, or with walletAddresspageSize· ? · optionnel
Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls.portfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slugwalletAddress· string · optionnel
Look up one wallet; requires chainId
Exemple d'appel{"name": "list_wallets", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "name": "texte", "address": "texte", "chainId": "texte", "createdAt": "texte", "lastSyncAt": "texte", "pagination": {}, "resultType": "walletList", "syncStatus": "pending", "syncMessages": [], "transactionCount": 1}} - list_workspaces≈ 298 tokens
List workspaces available to the authenticated Tokenbooks user, or search by name or slug.
Paramètres, retour & exemple (1)
Paramètresquery· string · optionnel
Optional workspace name or slug search query
Exemple d'appel{"name": "list_workspaces", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": []}} - mark_token_spam≈ 550 tokens
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.
Paramètres, retour & exemple (6)
ParamètresisSpam· boolean · optionnel
Spam flag to set (default true; false unmarks)reason· string · optionnel
Optional immutable root reason. Nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references.chainId· string · requis
Chain ID of the token (from a walletOperation)portfolioRef· string · requis
Portfolio exact name or slugtokenAddress· string · requis
Token contract address (from a walletOperation)workspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "mark_token_spam", "arguments": {"chainId": "texte", "portfolioRef": "texte", "tokenAddress": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "status": "queued", "success": true, "requestId": "texte"}} - merge_transactions≈ 842 tokens
Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then track the queued requestId.
Paramètres, retour & exemple (7)
Paramètresreason· string · optionnel
Optional immutable root reason. Nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references.subType· string · optionnel
Optional operation sub-typeoperations· array · requis
Operations to merge into the targetportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slugoperationType· string · requis · DEPOSIT_FIAT | INCOME | REFUND | REBATE | WITHDRAWAL_FIAT | EXPENSE | BUY | SELL
Accounting operation type for the merged transactiontransactionId· string · requis
Target transaction the operations are merged into
Exemple d'appel{"name": "merge_transactions", "arguments": {"operations": [], "portfolioRef": "texte", "workspaceRef": "texte", "operationType": "DEPOSIT_FIAT", "transactionId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "status": "queued", "success": true, "requestId": "texte", "transactionId": "texte"}} - preview_transaction_classification≈ 729 tokens
Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing.
Paramètres, retour & exemple (3)
Paramètresoperations· array · requis
Exact transfer-operation handles returned by transaction reads, including the accounting transaction each operation currently belongs toportfolioRef· string · requis
Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.workspaceRef· string · requis
Workspace name or slug. Call list_workspaces to resolve it.
Exemple d'appel{"name": "preview_transaction_classification", "arguments": {"operations": [], "portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"transactions": []}} - reprocess_transaction≈ 2472 tokens
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.
Paramètres, retour & exemple (7)
Paramètresreason· string · optionnel
Optional immutable root reason; nonempty bytes are preserved exactlytimeoutMs· integer · optionnel
Maximum wait time in millisecondsportfolioRef· string · requis
Portfolio name or slugworkspaceRef· string · requis
Workspace name or slugtransactionId· string · requis
Selected portfolio transaction ID to reprocesspollIntervalMs· integer · optionnel
Request-status polling interval in millisecondswaitForCompletion· boolean · optionnel
Wait for the queued reprocess request to reach a terminal state before returning
Exemple d'appel{"name": "reprocess_transaction", "arguments": {"portfolioRef": "texte", "workspaceRef": "texte", "transactionId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "status": "queued", "success": true, "requests": {}, "statuses": [], "completed": true, "requestId": "texte", "finalState": {}, "transactionId": "texte"}} - request_report_export≈ 397 tokens
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.
Paramètres, retour & exemple (7)
Paramètresformat· string · requis · xlsx | pdf | json
Export formattoDate· string · requis
Report period end ISO timestampfromDate· string · requis
Report period start ISO timestampreportType· string · requis · transactions | journal-entries | gains-losses | cost-basis-ledger | income-expense | profit-and-loss | statement | balance-sheet
Report typetotalsOnly· boolean · optionnel
Return summary only when trueportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slug
Exemple d'appel{"name": "request_report_export", "arguments": {"format": "xlsx", "toDate": "texte", "fromDate": "texte", "reportType": "transactions", "portfolioRef": "texte", "workspaceRef": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"requestId": "texte"}} - simulate_fiat_quote≈ 867 tokens
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.
Paramètres, retour & exemple (8)
Paramètresnetwork· string · requis · SWIFT | ACH | SEPA | FPS | EFT | FAST | CHATS | KFTC
Fiat payout rail / bank methodportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slugsenderCurrency· string · optionnel · USDC | USDT | USDe
Stablecoin funding the payout (default USDC)receivingAmount· string · requis
Amount the recipient should receive, as a decimal string in the receiving currency (e.g. "500000")purposeOfPayment· string · optionnel · payment_for_goods | payment_for_business_services | payment_for_salary_or_benefits | capital_investment_or_item | other
Purpose-of-payment classificationreceivingCurrency· string · optionnel
ISO 4217 receiving currency; defaults to the network defaultrecipientBankCountry· string · optionnel
ISO 3166-1 alpha-2 recipient bank country; defaults to the network default
Exemple d'appel{"name": "simulate_fiat_quote", "arguments": {"network": "SWIFT", "portfolioRef": "texte", "workspaceRef": "texte", "receivingAmount": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"note": "texte", "quote": {}, "status": "quoted", "corridor": {}}} - split_transactions≈ 933 tokens
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.
Paramètres, retour & exemple (7)
Paramètresreason· string · optionnel
Optional immutable root reason. Nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references.subType· string · optionnel
Optional operation sub-typeoperations· array · requis
Whole existing operation handles to move unchanged into a new transaction; do not use this to divide one normalized transfer amount into new economic legsportfolioRef· string · requis
Portfolio exact name or slugworkspaceRef· string · requis
Workspace exact name or slugoperationType· string · requis · DEPOSIT_FIAT | INCOME | REFUND | REBATE | WITHDRAWAL_FIAT | EXPENSE | BUY | SELL
Accounting operation type for the new transactiontransactionId· string · requis
Source transaction to split operations out of
Exemple d'appel{"name": "split_transactions", "arguments": {"operations": [], "portfolioRef": "texte", "workspaceRef": "texte", "operationType": "DEPOSIT_FIAT", "transactionId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "status": "queued", "success": true, "requestId": "texte", "transactionId": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».