{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_zsgfamc9hv3j","handle":"tokenbooks-crypto-and-fiat-accounting-and-paymen","url":"https://wellknown.network/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen","links":{"self":"https://wellknown.network/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen/record.json","html":"https://wellknown.network/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen","markdown":"https://wellknown.network/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen/record.md","api":"https://wellknown.network/api/v1/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen","status":"https://wellknown.network/api/v1/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen/status","claim":"https://wellknown.network/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen/claim.json","badge":"https://wellknown.network/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen/history","tools":"https://wellknown.network/api/v1/agents/tokenbooks-crypto-and-fiat-accounting-and-paymen/tools"},"ard":{"identifier":"urn:air:api.tokenbooks.io:server:tokenbooks-crypto-and-fiat-accounting-and-paymen","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Tokenbooks - crypto and fiat accounting and payments","summary":"Crypto and fiat on one double-entry ledger: sync wallets, reconcile, cost basis, audit-ready close.","description":"Crypto and fiat on one double-entry ledger: sync wallets, reconcile, cost basis, audit-ready close.","publisher":{"name":"io.tokenbooks","url":null},"homepage":"https://tokenbooks.io/use-cases/ai-accounting","repository":null,"version":"0.1.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.tokenbooks.io/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-17T03:34:43.456855Z","publishedAt":"2026-09-17T03:34:43.456855Z","registryName":"io.tokenbooks/tokenbooks"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"documents.spreadsheets","name":"Spreadsheets","confidence":1,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":1,"provenance":"derived"},{"slug":"finance.markets","name":"Markets & Trading","confidence":1,"provenance":"derived"},{"slug":"finance.accounting","name":"Accounting","confidence":1,"provenance":"derived"},{"slug":"finance.banking","name":"Banking","confidence":1,"provenance":"derived"},{"slug":"research.web","name":"Deep Web Research","confidence":0.583,"provenance":"derived"}],"categories":["commerce","content","documents","finance","research"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-10T11:26:24.602Z","lastProbedAt":"2026-10-10T11:26:24.602Z","statusComputedAt":"2026-10-10T11:26:59.831Z","reliability30d":{"probes":91,"successRate":1,"p50Ms":528,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":91,"ok":91,"authBoundaryOk":0,"serviceOk":91,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T11:26:24.602Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":528,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}},{"at":"2026-10-10T05:28:12.093Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":563,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}},{"at":"2026-10-09T22:28:07.113Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":535,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}},{"at":"2026-10-09T16:32:47.549Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":645,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}},{"at":"2026-10-09T10:23:36.908Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":559,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}},{"at":"2026-10-09T04:28:15.367Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":503,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}},{"at":"2026-10-08T21:23:55.435Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":529,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}},{"at":"2026-10-08T15:24:15.316Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":483,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}},{"at":"2026-10-08T08:28:07.802Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":639,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}},{"at":"2026-10-08T01:21:40.082Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":526,"error":null,"detail":{"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"toolCount":36,"toolsHash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","serverName":"tokenbooks","capabilities":["tools","prompts"],"serverVersion":"0.1.1","protocolVersion":"2025-11-25"}}],"tools":[{"name":"get_server_info","description":"Learn what this accounting server covers before connecting: supported blockchains and fiat sources, accounting standards, plans with their capacity limits and w"},{"name":"get_accounting_reference","description":"Look up valid accounting values—including operation types, transaction statuses, cost-basis methods, and lot event kinds—before classifying or filtering; use th"},{"name":"list_workspaces","description":"List workspaces available to the authenticated Tokenbooks user, or search by name or slug."},{"name":"list_portfolios","description":"List portfolios available in a workspace, or search by name or slug."},{"name":"get_portfolio","description":"Read one portfolio's settings and accounting policy by exact name or slug, including its financial reporting framework and legal entity type. If legalEntityType"},{"name":"get_portfolio_balances","description":"Check whether each wallet's computed token balances match its latest synchronized snapshot; returns per-wallet match status, token count, last transaction time,"},{"name":"list_accounting_rules","description":"Find saved accounting rules, filter them, or recover the exact ruleRef needed to preview, edit, or delete one rule."},{"name":"edit_accounting_rules","description":"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"},{"name":"apply_accounting_rules","description":"Re-run the current saved rules and default assignments for vendors, people, or organizations (counterparty defaults) across eligible existing accounting transac"},{"name":"list_wallets","description":"List wallets in a portfolio with sync status and transaction counts. Pass chainId and walletAddress to check one wallet instead — safe codes/messages show wheth"},{"name":"list_journal_line_assignment_options","description":"Find the ledger accounts, saved counterparties, or responsibility centers (departments, projects, or other reporting groups) that can be assigned to an accounti"},{"name":"edit_transaction","description":"Change one accounting transaction (a Portfolio Transaction): update_fields for memo, the full tag set, or operation type; update_journal_line for the ledger acc"},{"name":"import_adjustment_journals","description":"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 is"},{"name":"get_sync_status","description":"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"},{"name":"incremental_sync","description":"Pull only recent blockchain and wallet activity while keeping all existing transaction and accounting history; use this routine refresh before reports or when n"},{"name":"full_resync","description":"DANGER: delete and rebuild the selected wallet transaction, journal, and cost-basis history from source data. Use only after the user explicitly requests this d"},{"name":"list_portfolio_transactions","description":"Find accounting transactions—called Portfolio Transactions in Tokenbooks—for review or reconciliation; filter by status, type, errors, spam, wallet, or asset, o"},{"name":"list_raw_transactions","description":"Find compact source transactions first, called Raw Transactions in Tokenbooks, including unprocessed or partially linked activity. Pass rawTransactionId to show"},{"name":"get_filter_options","description":"List the available values for one portfolio filter—such as accounts, wallets, assets, transaction status, or warnings—before building a filtered query."},{"name":"get_portfolio_issue_summary","description":"Summarize accounting problems that need review with exact counts for uncategorized, errored, and spam-related transactions, plus examples of uncategorized and e"},{"name":"confirm_transaction","description":"Post a proposed accounting transaction to the books; this queued action returns a requestId."},{"name":"reprocess_transaction","description":"Recalculate one accounting transaction after correcting its inputs; this destructive queued job may regroup only its assigned wallet movements, and waitForCompl"},{"name":"preview_transaction_classification","description":"Preview how selected wallet movements would be grouped and labeled as accounting transactions. Returns every proposal in order and saves nothing."},{"name":"merge_transactions","description":"Destructively combine wallet movements from several accounting transactions into one target transaction and reclassify it; preview the grouping first, then trac"},{"name":"split_transactions","description":"Destructively move selected whole existing operation handles unchanged out of one accounting transaction into a new classified transaction; use this only when t"},{"name":"mark_token_spam","description":"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 markin"},{"name":"simulate_fiat_quote","description":"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"},{"name":"get_journal_entry","description":"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."},{"name":"get_lot_ledger","description":"Trace paginated cost-basis acquisition, disposal, transfer, and adjustment history across a portfolio, optionally narrowed by asset, wallet, event kind, account"},{"name":"request_report_export","description":"Queue generation of the requested spreadsheet, PDF, or JSON accounting report—such as profit and loss, trial balance, balance sheet, journal, or transaction exp"},{"name":"get_request_status","description":"Check the status of any queued background work — report generation, wallet sync, rule application, or a transaction change — using the requestId returned when i"},{"name":"add_wallet","description":"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 sup"},{"name":"create_portfolio","description":"Create an accounting portfolio in an existing workspace, optionally choosing jurisdiction and policies; Canada and US profiles require matching currency, entity"},{"name":"get_asset_position","description":"Summarize one cryptocurrency or token across every wallet with quantity, cost basis, market value, unrealized gain or loss, and portfolio totals. This covers wa"},{"name":"list_chains","description":"Find which blockchains support wallet syncing by name, Tokenbooks chain slug, or numeric EVM network ID; results identify EVM networks whose shared 0x address c"},{"name":"get_help","description":"Find practical Tokenbooks instructions or accounting guidance. Pass query to search by topic (MCP workflow, cost basis, fair market value, gas fees, stablecoins"}],"package":null,"toolSurface":{"id":"ts_7eyfuvb797xf","endpointId":"ep_53n58jf5es4v","hash":"1d08d082d50b58e4075afc0cf1fa3885d474a538cbca380d5b5a3727090499bd","toolCount":36,"serverName":"tokenbooks","serverVersion":"0.1.1","protocolVersion":"2025-11-25","firstSeenAt":"2026-10-02T03:22:26.506Z","lastSeenAt":"2026-10-10T11:26:24.608Z","observations":32,"toolNames":["get_server_info","get_accounting_reference","list_workspaces","list_portfolios","get_portfolio","get_portfolio_balances","list_accounting_rules","edit_accounting_rules","apply_accounting_rules","list_wallets","list_journal_line_assignment_options","edit_transaction","import_adjustment_journals","get_sync_status","incremental_sync","full_resync","list_portfolio_transactions","list_raw_transactions","get_filter_options","get_portfolio_issue_summary","confirm_transaction","reprocess_transaction","preview_transaction_classification","merge_transactions","split_transactions","mark_token_spam","simulate_fiat_quote","get_journal_entry","get_lot_ledger","request_report_export","get_request_status","add_wallet","create_portfolio","get_asset_position","list_chains","get_help"],"distinctSurfaces":12},"endpointFacts":[{"id":"ep_53n58jf5es4v","url":"https://api.tokenbooks.io/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T05:28:12.101Z","auth":{"observedAt":"2026-10-10T05:28:13.556Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://api.tokenbooks.io/.well-known/oauth-protected-resource/mcp","resource":"https://api.tokenbooks.io/mcp","authorizationServers":["https://tokenbooks.io/api/auth"],"scopesSupported":["offline_access","tokenbooks.mcp.read","tokenbooks.mcp.sync","tokenbooks.mcp.reports","tokenbooks.mcp.payments","tokenbooks.mcp.rules"]},"authorizationServer":{"url":"https://tokenbooks.io/.well-known/oauth-authorization-server/api/auth","issuer":"https://tokenbooks.io/api/auth","grantTypesSupported":["authorization_code","client_credentials","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none","client_secret_basic","client_secret_post","private_key_jwt"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":["EdDSA","ES256","ES512","PS256","RS256"],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":true,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-10T05:28:13.575Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"api.tokenbooks.io","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-09-28T18:56:16.000Z","validTo":"2026-12-27T18:56:15.000Z","daysToExpiry":78,"sanCount":1,"fingerprint256":"77:5D:06:CA:88:33:BF:DB:14:26:A7:69:DA:28:16:76:35:03:64:DE:FB:38:61:23:1B:BB:7F:AE:4F:0C:37:EE"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.tokenbooks/tokenbooks","url":"https://registry.modelcontextprotocol.io/v0/servers/io.tokenbooks%2Ftokenbooks","firstSeenAt":"2026-09-15T14:22:32.294Z","fetchedAt":"2026-10-08T17:21:44.098Z","normalizedAt":"2026-10-08T17:21:44.098Z"}]},"firstSeenAt":"2026-09-15T14:22:32.294Z","updatedAt":"2026-10-10T11:28:06.020Z"}