Tokenbooks - crypto and fiat accounting and payments
What this MCP does
Maintains double-entry accounting for crypto and fiat portfolios, including wallet synchronization, transaction classification, cost-basis lots, reconciliation, journal entries, reports, and audit-ready records.
Tools
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'wallets'], 'properties': {'wallets': {'type': 'array', 'items': {'type': 'object', 'required': ['address'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'description': 'Optional wallet name'}, 'address': {'type': 'string', 'minLength': 1, 'description': 'Wallet address'}, 'integrationId': {'type': 'string', 'minLength': 1, 'description': "Integration id for chain resolution. Use 'evm' for automatic EVM chain discovery; use a specific integration id for direct chain add."}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['results', 'syncQueued'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['address', 'status'], 'properties': {'reason': {'type': 'string'}, 'status': {'enum': ['created', 'skipped'], 'type': 'string'}, 'address': {'type': 'string'}, 'chainRef': {'type': 'string'}}, 'additionalProperties': False}}, 'syncQueued': {'type': 'boolean'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'requestId'], 'properties': {'status': {'type': 'string', 'const': 'queued'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'transactionId'], 'properties': {'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}, 'transactionId': {'type': 'string', 'description': 'Portfolio transaction ID'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['status', 'requestId', 'transactionId'], 'properties': {'status': {'type': 'string', 'const': 'queued'}, 'requestId': {'type': 'string'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'success', 'transactionId'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'completed'}, 'success': {'type': 'boolean'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'transactionId'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['queued', 'completed'], 'type': 'string'}, 'success': {'type': 'boolean'}, 'requestId': {'type': 'string'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'name'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name'}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$', 'description': 'Functional currency (default USD)'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}, 'legalEntityType': {'enum': ['CORPORATION', 'INDIVIDUAL', 'TRUST', 'PARTNERSHIP'], 'type': 'string', 'nullable': True, 'description': 'Legal entity classification for an explicit country profile'}, 'jurisdictionCode': {'type': 'string', 'description': 'Exact assigned ISO country code, or custom. If omitted, resolves Custom regardless of currency'}, 'reportingTimezone': {'type': 'string', 'description': 'Canonical IANA reporting timezone (default UTC)'}, 'costBasisLotMethod': {'enum': ['FIFO', 'LIFO', 'HIFO', 'ACB'], 'type': 'string', 'description': 'Lot-matching method for disposals'}, 'costBasisPerWallet': {'type': 'boolean', 'description': 'Whether acquisition lots stay scoped to each wallet'}, 'stablecoinTreatment': {'enum': ['BASE', 'ASSET'], 'type': 'string', 'description': 'Stablecoin valuation treatment; this does not change lot tracking'}, 'gasFeeAccountingTreatment': {'enum': ['DISPOSAL_AND_COST_BASIS', 'EXPENSE_ONLY'], 'type': 'string', 'description': 'Accounting treatment for gas spend'}, 'financialReportingFramework': {'enum': ['TAX_ONLY', 'US_GAAP_PRE_2025', 'US_GAAP_ASC350_60', 'IFRS_IAS38', 'IFRS_IAS38_REVAL', 'IFRS_IAS2_LCNRV', 'IFRS_IAS2_BROKER_TRADER_FVLCTS', 'ASPE', 'FRS_102', 'AASB_138', 'OTHER'], 'type': 'string', 'description': 'Financial reporting framework (default TAX_ONLY)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['slug', 'name', 'createdAt', 'updatedAt', 'currency', 'accountingConfiguration', 'reportingTimezone'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'currency': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'legalEntityType': {'enum': ['BUSINESS', 'CORPORATION', 'INDIVIDUAL', 'TRUST', 'PARTNERSHIP'], 'type': 'string'}, 'reportingTimezone': {'type': 'string'}, 'accountingConfiguration': {'type': 'object', 'required': ['gasFeeAccountingTreatment', 'isPurchaseTaxable', 'costBasisLotMethod', 'baseCurrency', 'jurisdictionCode', 'stablecoinTreatment', 'costBasisPerWallet', 'defiDepositTreatment', 'separateIncomeExpenseLines', 'financialReportingFramework'], 'properties': {'baseCurrency': {'type': 'string'}, 'jurisdictionCode': {'type': 'string'}, 'isPurchaseTaxable': {'type': 'boolean'}, 'costBasisLotMethod': {'enum': ['FIFO', 'LIFO', 'HIFO', 'ACB'], 'type': 'string'}, 'costBasisPerWallet': {'type': 'boolean'}, 'stablecoinTreatment': {'enum': ['BASE', 'ASSET'], 'type': 'string'}, 'defiDepositTreatment': {'enum': ['TAXABLE_EXCHANGE', 'NON_TAXABLE_RESERVATION'], 'type': 'string'}, 'gasFeeAccountingTreatment': {'enum': ['DISPOSAL_AND_COST_BASIS', 'EXPENSE_ONLY'], 'type': 'string'}, 'separateIncomeExpenseLines': {'type': 'boolean'}, 'financialReportingFramework': {'enum': ['TAX_ONLY', 'US_GAAP_PRE_2025', 'US_GAAP_ASC350_60', 'IFRS_IAS38', 'IFRS_IAS38_REVAL', 'IFRS_IAS2_LCNRV', 'IFRS_IAS2_BROKER_TRADER_FVLCTS', 'ASPE', 'FRS_102', 'AASB_138', 'OTHER'], 'type': 'string', 'default': 'TAX_ONLY'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'operation'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': 'Human-readable rule name, shown in the rules list. Only for operation create, update; required for operation create.'}, 'action': {'type': 'object', 'required': ['formatVersion', 'actions'], 'properties': {'actions': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['type', 'target', 'counterpartyName'], 'properties': {'type': {'enum': ['SET_COUNTERPARTY'], 'type': 'string', 'description': 'Which change this action makes.'}, 'target': {'enum': ['LINE'], 'type': 'string', 'description': 'What the change applies to: a journal line or the transaction.'}, 'counterpartyName': {'type': 'string', 'minLength': 1, 'description': 'Counterparty name, from list_journal_line_assignment_options (type: counterparty).'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'target', 'accountNumber'], 'properties': {'type': {'enum': ['SET_LEDGER_ACCOUNT'], 'type': 'string', 'description': 'Which change this action makes.'}, 'target': {'enum': ['LINE'], 'type': 'string', 'description': 'What the change applies to: a journal line or the transaction.'}, 'accountNumber': {'type': 'string', 'maxLength': 8, 'minLength': 1, 'description': 'Chart-of-accounts number, from list_journal_line_assignment_options (type: ledger_account).'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'target', 'responsibilityCenterAssignments'], 'properties': {'type': {'enum': ['SET_RESPONSIBILITY_CENTERS'], 'type': 'string', 'description': 'Which change this action makes.'}, 'target': {'enum': ['LINE'], 'type': 'string', 'description': 'What the change applies to: a journal line or the transaction.'}, 'responsibilityCenterAssignments': {'type': 'array', 'items': {'type': 'object', 'required': ['responsibilityCenterTypeKey', 'responsibilityCenterName'], 'properties': {'responsibilityCenterName': {'type': 'string', 'minLength': 1, 'description': 'Responsibility center name, from list_journal_line_assignment_options (type: responsibility_center).'}, 'responsibilityCenterTypeKey': {'type': 'string', 'pattern': '^[a-z0-9]+(_[a-z0-9]+)*$', 'description': 'Stable responsibility-center type key. It uses lowercase alphanumeric snake_case segments.'}}, 'additionalProperties': False}, 'minItems': 1}}, 'additionalProperties': False}]}, 'minItems': 1, 'description': 'What the rule changes when it matches. At most one action of each type.'}, 'formatVersion': {'enum': [1], 'type': 'number', 'description': 'Structure version of this envelope. Always 1.'}}, 'description': 'Only for operation create, update; required for operation create.', 'additionalProperties': False}, 'enabled': {'anyOf': [{'type': 'boolean', 'default': True, 'description': 'Whether the rule evaluates. A disabled rule is kept but never fires.'}, {'type': 'boolean', 'description': 'Whether the rule evaluates. A disabled rule is kept but never fires.'}], 'description': 'Whether the rule evaluates. A disabled rule is kept but never fires. Only for operation create, set_enabled; required for operation set_enabled.'}, 'preview': {'type': 'boolean', 'description': 'When true, evaluate the change and return its impact without saving it. Not for operation current.'}, 'ruleRef': {'type': 'string', 'minLength': 1, 'description': 'Saved rule handle, from list_accounting_rules. Only for operation update, set_enabled, delete; required for each.'}, 'operation': {'enum': ['create', 'update', 'set_enabled', 'reorder', 'delete', 'current'], 'type': 'string', 'description': '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': {'type': 'object', 'required': ['formatVersion', 'all'], 'properties': {'all': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['fromAddressLabel'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'string', 'minLength': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['equals', 'contains', 'notEquals', 'notContains'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['toAddressLabel'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'string', 'minLength': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['equals', 'contains', 'notEquals', 'notContains'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['fromAddress'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'string', 'minLength': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['equals', 'contains'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['toAddress'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'string', 'minLength': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['equals', 'contains'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['direction'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'enum': ['IN', 'OUT', 'GAS'], 'type': 'string', 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['equals', 'notEquals'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['asset'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['assetClass'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'array', 'items': {'enum': ['ERC20', 'FIAT', 'NATIVE', 'REBASE_LST', 'INTEREST_BEARING', 'VALUE_ACCRUING', 'LP_SHARE', 'DEBT', 'REFLECT', 'VOTE_ESCROWED', 'NFT'], 'type': 'string'}, 'minItems': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['stablecoin'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'boolean', 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['equals'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['chain'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['operationType'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'array', 'items': {'enum': ['DEPOSIT_FIAT', 'INCOME', 'REFUND', 'WITHDRAWAL_FIAT', 'EXPENSE', 'BUY', 'SELL', 'EXCHANGE', 'SWAP', 'MOVE', 'INTERCOMPANY_SEND', 'INTERCOMPANY_RECEIVE', 'STAKE', 'UNSTAKE', 'PROTOCOL_DEPOSIT', 'PROTOCOL_WITHDRAW', 'VAULT_DEPOSIT', 'VAULT_WITHDRAW', 'LP_IN', 'LP_OUT', 'LOAN_BORROW', 'LOAN_REPAY', 'LOAN_LIQUIDATION', 'LEND_GIVE', 'LEND_WITHDRAW', 'ADJUSTMENT', 'UNCATEGORIZED', 'SPAM'], 'type': 'string'}, 'minItems': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['accountSubType'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'array', 'items': {'enum': ['EXT', 'BNK', 'INC', 'EXP', 'LINT', 'LLIQ', 'LQLOSS', 'CLOSS', 'CBNK', 'CBAS', 'CRE', 'CGL', 'CEXP', 'CINC', 'TRADING_REVENUE', 'COGS', 'INVENTORY_VALUATION_ADJUSTMENT', 'INVENTORY_COGS_ADJUSTMENT', 'INVENTORY_WRITE_DOWN', 'INVENTORY_REMEASUREMENT_GAIN', 'INVENTORY_REMEASUREMENT_LOSS', 'CNP', 'UINC', 'UEXP', 'OFEXP', 'OFINC', 'ICINV', 'CAP', 'UNREALISED_FV_GAIN', 'UNREALISED_FV_LOSS', 'CFVA'], 'type': 'string'}, 'minItems': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'oneOf': [{'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['fiatValue'], 'type': 'string', 'description': 'Condition field.'}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$', 'description': 'Decimal fiat amount to compare against.'}, 'operator': {'enum': ['gt'], 'type': 'string', 'description': 'Comparison operator.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['fiatValue'], 'type': 'string', 'description': 'Condition field.'}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$', 'description': 'Decimal fiat amount to compare against.'}, 'operator': {'enum': ['lt'], 'type': 'string', 'description': 'Comparison operator.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['fiatValue'], 'type': 'string', 'description': 'Condition field.'}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$', 'description': 'Decimal fiat amount to compare against.'}, 'operator': {'enum': ['gte'], 'type': 'string', 'description': 'Comparison operator.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['fiatValue'], 'type': 'string', 'description': 'Condition field.'}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$', 'description': 'Decimal fiat amount to compare against.'}, 'operator': {'enum': ['lte'], 'type': 'string', 'description': 'Comparison operator.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['fiatValue'], 'type': 'string', 'description': 'Condition field.'}, 'value': {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}]}, 'maxItems': 2, 'minItems': 2, 'description': 'Inclusive [low, high] decimal-string range.'}, 'operator': {'enum': ['between'], 'type': 'string', 'description': 'Comparison operator.'}}, 'additionalProperties': False}]}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['entryType'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'enum': ['DR', 'CR'], 'type': 'string', 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['equals'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['accountType'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'array', 'items': {'enum': ['ASSET', 'LIABILITY', 'EQUITY', 'INCOME', 'EXPENSE'], 'type': 'string'}, 'minItems': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['wallet'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'array', 'items': {'type': 'object', 'required': ['chainId', 'address'], 'properties': {'address': {'type': 'string', 'minLength': 1, 'description': 'Wallet address'}, 'chainId': {'type': 'string', 'minLength': 1, 'description': 'Chain ID'}}, 'additionalProperties': False}, 'minItems': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['operator', 'field', 'value'], 'properties': {'field': {'enum': ['accountNumber'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'array', 'items': {'type': 'string', 'maxLength': 8, 'minLength': 1, 'description': 'Chart-of-accounts number, from list_journal_line_assignment_options (type: ledger_account).'}, 'minItems': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'enum': ['counterparty'], 'type': 'string', 'description': 'Which part of the transaction this condition tests.'}, 'value': {'type': 'array', 'items': {'type': 'string', 'minLength': 1, 'description': 'Counterparty name, from list_journal_line_assignment_options (type: counterparty).'}, 'minItems': 1, 'description': 'The value the field is compared against.'}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string', 'description': 'How the field is compared with value.'}}, 'additionalProperties': False}]}, 'minItems': 1, 'description': 'Conditions that must all match for the rule to fire. At least one is required.'}, 'formatVersion': {'enum': [1], 'type': 'number', 'description': 'Structure version of this envelope. Always 1.'}}, 'description': 'Only for operation create, update; required for operation create.', 'additionalProperties': False}, 'maxAffected': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1, 'description': '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': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}, 'orderedRuleRefs': {'type': 'array', 'items': {'type': 'string', 'minLength': 1, 'description': 'Saved rule handle, from list_accounting_rules.'}, 'minItems': 1, 'description': '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.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['mode'], 'properties': {'mode': {'$ref': '#/properties/mode'}, 'jobId': {'$ref': '#/properties/jobId'}, 'result': {'$ref': '#/properties/result'}, 'status': {'$ref': '#/properties/status'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['detail', 'scannedCount', 'candidateCount', 'affectedCount', 'changes'], 'properties': {'detail': {'type': 'string', 'const': 'compact'}, 'changes': {'$ref': '#/properties/changes'}, 'truncatedBy': {'$ref': '#/properties/truncatedBy'}, 'scannedCount': {'$ref': '#/properties/scannedCount'}, 'affectedCount': {'$ref': '#/properties/affectedCount'}, 'candidateCount': {'$ref': '#/properties/candidateCount'}, 'lastAffectedAt': {'$ref': '#/properties/lastAffectedAt'}, 'firstAffectedAt': {'$ref': '#/properties/firstAffectedAt'}, 'skippedRuleEvidence': {'$ref': '#/properties/skippedRuleEvidence'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'mode': {'enum': ['sync', 'async'], 'type': 'string'}, 'jobId': {'type': 'string'}, 'detail': {'type': 'string', 'const': 'compact'}, 'result': {'oneOf': [{'type': 'object', 'required': ['success'], 'properties': {'data': {}, 'success': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, {'type': 'object', 'required': ['success', 'error'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message', 'body'], 'properties': {'body': {'anyOf': [{'type': 'object', 'required': ['usageType', 'currentUsage', 'limit'], 'properties': {'limit': {'type': 'number'}, 'usageType': {'type': 'string'}, 'currentUsage': {'type': 'number'}}, 'additionalProperties': False}, {}]}, 'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'success': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}]}, 'status': {'type': 'string', 'const': 'queued'}, 'changes': {'type': 'array', 'items': {'type': 'object', 'required': ['portfolioTransactionId', 'timestamp', 'lines'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['lineNumber', 'responsibilityCenters', 'matchedButLost'], 'properties': {'account': {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'maxLength': 8, 'minLength': 1}, 'from': {'type': 'string', 'maxLength': 8, 'minLength': 1}, 'byRule': {'oneOf': [{'type': 'object', 'required': ['kind', 'ruleRef', 'version'], 'properties': {'kind': {'type': 'string', 'const': 'saved'}, 'ruleRef': {'type': 'string', 'minLength': 1}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'label', 'version'], 'properties': {'kind': {'type': 'string', 'const': 'draft'}, 'label': {'type': 'string', 'const': 'draft'}, 'version': {'type': 'number', 'const': 1}}, 'additionalProperties': False}]}, 'lockedBy': {'enum': ['MANUAL', 'MANUAL_CLEARED', 'PAYMENT_LINK', 'SYSTEM_RULE'], 'type': 'string'}}, 'additionalProperties': False}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'counterparty': {'type': 'object', 'properties': {'to': {'type': 'string', 'minLength': 1}, 'from': {'type': 'string', 'minLength': 1}, 'byRule': {'oneOf': [{'type': 'object', 'required': ['kind', 'ruleRef', 'version'], 'properties': {'kind': {'type': 'string', 'const': 'saved'}, 'ruleRef': {'type': 'string', 'minLength': 1}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'label', 'version'], 'properties': {'kind': {'type': 'string', 'const': 'draft'}, 'label': {'type': 'string', 'const': 'draft'}, 'version': {'type': 'number', 'const': 1}}, 'additionalProperties': False}]}, 'lockedBy': {'enum': ['MANUAL', 'MANUAL_CLEARED', 'PAYMENT_LINK', 'SYSTEM_RULE'], 'type': 'string'}}, 'additionalProperties': False}, 'matchedButLost': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['kind', 'ruleRef', 'version', 'output'], 'properties': {'kind': {'type': 'string', 'const': 'saved'}, 'output': {'oneOf': [{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'enum': ['account', 'counterparty'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'responsibilityCenterTypeKey'], 'properties': {'kind': {'type': 'string', 'const': 'responsibilityCenter'}, 'responsibilityCenterTypeKey': {'type': 'string', 'pattern': '^[a-z0-9]+(_[a-z0-9]+)*$'}}, 'additionalProperties': False}]}, 'ruleRef': {'type': 'string', 'minLength': 1}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'label', 'version', 'output'], 'properties': {'kind': {'type': 'string', 'const': 'draft'}, 'label': {'type': 'string', 'const': 'draft'}, 'output': {'oneOf': [{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'enum': ['account', 'counterparty'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'responsibilityCenterTypeKey'], 'properties': {'kind': {'type': 'string', 'const': 'responsibilityCenter'}, 'responsibilityCenterTypeKey': {'type': 'string', 'pattern': '^[a-z0-9]+(_[a-z0-9]+)*$'}}, 'additionalProperties': False}]}, 'version': {'type': 'number', 'const': 1}}, 'additionalProperties': False}]}}, 'assignmentChanged': {'type': 'boolean'}, 'responsibilityCenters': {'type': 'array', 'items': {'type': 'object', 'required': ['responsibilityCenterTypeKey'], 'properties': {'to': {'type': 'object', 'required': ['responsibilityCenterName', 'percentageBps'], 'properties': {'percentageBps': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'responsibilityCenterName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'from': {'type': 'object', 'required': ['responsibilityCenterName', 'percentageBps'], 'properties': {'percentageBps': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'responsibilityCenterName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'byRule': {'oneOf': [{'type': 'object', 'required': ['kind', 'ruleRef', 'version'], 'properties': {'kind': {'type': 'string', 'const': 'saved'}, 'ruleRef': {'type': 'string', 'minLength': 1}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'label', 'version'], 'properties': {'kind': {'type': 'string', 'const': 'draft'}, 'label': {'type': 'string', 'const': 'draft'}, 'version': {'type': 'number', 'const': 1}}, 'additionalProperties': False}]}, 'lockedBy': {'enum': ['MANUAL', 'MANUAL_CLEARED', 'PAYMENT_LINK', 'SYSTEM_RULE'], 'type': 'string'}, 'responsibilityCenterTypeKey': {'type': 'string', 'pattern': '^[a-z0-9]+(_[a-z0-9]+)*$'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'minItems': 1}, 'timestamp': {'type': 'string', 'format': 'date-time'}, 'portfolioTransactionId': {'type': 'string', 'minLength': 1}, 'ruleEvaluationFailures': {'type': 'array', 'items': {'type': 'object', 'required': ['rule'], 'properties': {'rule': {'oneOf': [{'type': 'object', 'required': ['kind', 'ruleRef', 'version'], 'properties': {'kind': {'type': 'string', 'const': 'saved'}, 'ruleRef': {'type': 'string', 'minLength': 1}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'label', 'version'], 'properties': {'kind': {'type': 'string', 'const': 'draft'}, 'label': {'type': 'string', 'const': 'draft'}, 'version': {'type': 'number', 'const': 1}}, 'additionalProperties': False}]}, 'rejection': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'enum': ['ACCOUNT_FACTS_INCOMPLETE', 'ASSET_EVIDENCE_INCOMPLETE', 'CURRENCY_MISMATCH', 'WALLET_SCOPE_CONFLICT', 'WALLET_PROVENANCE_AMBIGUOUS', 'ASSET_EVIDENCE_CONFLICT', 'ASSET_EVIDENCE_MISSING', 'LOT_EVIDENCE_INCONSISTENT', 'INVALID_REPORT_CLASSIFICATION', 'CAPITAL_GAINS_LOT_EVIDENCE_REQUIRED', 'CAPITAL_LOSS_DISPOSAL_LOT_EVIDENCE_REQUIRED', 'COUNTERPARTY_NOT_SUPPORTED'], 'type': 'string'}, 'message': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'maxItems': 100}, 'truncatedBy': {'enum': ['affected', 'budget', 'details', 'scanned'], 'type': 'string'}, 'scannedCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'affectedCount': {'type': 'integer', 'maximum': 100, 'minimum': -9007199254740991}, 'candidateCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'lastAffectedAt': {'type': 'string', 'format': 'date-time'}, 'firstAffectedAt': {'type': 'string', 'format': 'date-time'}, 'skippedRuleEvidence': {'type': 'array', 'items': {'$ref': '#/properties/changes/items'}, 'maxItems': 2000}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'operation', 'transactionId'], 'properties': {'memo': {'type': 'string', 'nullable': True, 'description': 'New memo; pass null to clear it Only for operation update_fields.'}, 'tags': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'description': 'Replace the full set of transaction tags Only for operation update_fields.'}, 'reason': {'type': 'string', 'minLength': 1, 'description': 'Immutable root reason whose nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references Only for operation set_fmv_override.'}, 'assetId': {'type': 'string', 'minLength': 1, 'description': 'Asset ID to override (e.g. eth_1, as returned by the read tools) Only for operation set_fmv_override; required for each.'}, 'subType': {'type': 'string', 'minLength': 1, 'description': 'New operation sub-type (requires operationType) Only for operation update_fields.'}, 'operation': {'enum': ['update_fields', 'update_journal_line', 'set_fmv_override'], 'type': 'string', 'description': "update_fields: Change memo, the full tag set, or the accounting operation type. update_journal_line: Change the ledger account, counterparty, or reporting-group assignments on one transaction's debit or credit line. set_fmv_override: Set a corrected fair market value per unit for one asset on the transaction and recompute dependent cost-basis records."}, 'timeoutMs': {'type': 'integer', 'maximum': 60000, 'minimum': 1000, 'description': 'Maximum wait time in milliseconds, 1000 to 60000 (default 30000) Not for operation update_journal_line.'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Journal entry line number (1-based) Only for operation update_journal_line; required for each.'}, 'quoteSource': {'type': 'string', 'minLength': 1, 'description': 'Optional source/justification for the price Only for operation set_fmv_override.'}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}, 'accountNumber': {'type': 'string', 'minLength': 1, 'description': 'Chart-of-accounts number to assign (from list_journal_line_assignment_options, type: ledger_account) Only for operation update_journal_line.'}, 'newValueQuote': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$', 'description': 'Exact per-unit decimal string in base currency, e.g. "0". Do not use price. Only for operation set_fmv_override; required for each.'}, 'operationType': {'enum': ['DEPOSIT_FIAT', 'INCOME', 'REFUND', 'WITHDRAWAL_FIAT', 'EXPENSE', 'BUY', 'SELL', 'EXCHANGE', 'SWAP', 'MOVE', 'INTERCOMPANY_SEND', 'INTERCOMPANY_RECEIVE', 'STAKE', 'UNSTAKE', 'PROTOCOL_DEPOSIT', 'PROTOCOL_WITHDRAW', 'VAULT_DEPOSIT', 'VAULT_WITHDRAW', 'LP_IN', 'LP_OUT', 'LOAN_BORROW', 'LOAN_REPAY', 'LOAN_LIQUIDATION', 'LEND_GIVE', 'LEND_WITHDRAW', 'ADJUSTMENT', 'UNCATEGORIZED', 'SPAM'], 'type': 'string', 'description': 'New accounting operation type Only for operation update_fields.'}, 'quoteCurrency': {'type': 'string', 'minLength': 1, 'description': 'Optional quote currency (defaults to base currency) Only for operation set_fmv_override.'}, 'transactionId': {'type': 'string', 'minLength': 1, 'description': 'Portfolio transaction ID'}, 'pollIntervalMs': {'type': 'integer', 'maximum': 5000, 'minimum': 100, 'description': 'Polling interval in milliseconds, 100 to 5000 (default 500) Not for operation update_journal_line.'}, 'counterpartyName': {'type': 'string', 'nullable': True, 'minLength': 1, 'description': 'Counterparty name to assign; pass null to unset Only for operation update_journal_line.'}, 'waitForCompletion': {'anyOf': [{'type': 'boolean', 'description': 'When true, poll queued request IDs and include terminal status/final state before returning'}, {'type': 'boolean', 'description': 'When true, poll the queued request and include terminal status/final state before returning'}], 'description': 'When true, poll queued request IDs and include terminal status/final state before returning Not for operation update_journal_line.'}, 'responsibilityCenterAssignments': {'type': 'array', 'items': {'type': 'object', 'required': ['responsibilityCenterTypeKey', 'responsibilityCenterName'], 'properties': {'responsibilityCenterName': {'type': 'string', 'minLength': 1, 'description': 'Responsibility-center name within that type'}, 'responsibilityCenterTypeKey': {'type': 'string', 'minLength': 1, 'description': 'Responsibility-center type key / dimension slug, e.g. primary, goal'}}, 'additionalProperties': False}, 'description': 'Typed responsibility-center assignment set, one per dimension. Replaces the line assignments; pass [] to clear every dimension. Type keys and center names come from list_journal_line_assignment_options, type: responsibility_center. Only for operation update_journal_line.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['operation', 'transactionId', 'results'], 'properties': {'results': {'$ref': '#/properties/results'}, 'requests': {'$ref': '#/properties/requests'}, 'statuses': {'$ref': '#/properties/statuses'}, 'completed': {'$ref': '#/properties/completed'}, 'operation': {'type': 'string', 'const': 'update_fields'}, 'finalState': {'$ref': '#/properties/finalState'}, 'transactionId': {'$ref': '#/properties/transactionId'}, 'primaryRequestId': {'$ref': '#/properties/primaryRequestId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['operation', 'transactionId', 'lineNumber', 'results'], 'properties': {'results': {'$ref': '#/properties/results'}, 'operation': {'type': 'string', 'const': 'update_journal_line'}, 'lineNumber': {'$ref': '#/properties/lineNumber'}, 'transactionId': {'$ref': '#/properties/transactionId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'requestId', 'transactionId', 'operation'], 'properties': {'status': {'$ref': '#/properties/status'}, 'requests': {'$ref': '#/properties/requests'}, 'statuses': {'$ref': '#/properties/statuses'}, 'completed': {'$ref': '#/properties/completed'}, 'operation': {'type': 'string', 'const': 'set_fmv_override'}, 'requestId': {'$ref': '#/properties/requestId'}, 'finalState': {'$ref': '#/properties/finalState'}, 'transactionId': {'$ref': '#/properties/transactionId'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'success', 'transactionId', 'operation'], 'properties': {'error': {'$ref': '#/properties/error'}, 'status': {'$ref': '#/properties/status'}, 'success': {'$ref': '#/properties/success'}, 'operation': {'type': 'string', 'const': 'set_fmv_override'}, 'transactionId': {'$ref': '#/properties/transactionId'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['operation', 'transactionId'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['queued', 'completed'], 'type': 'string'}, 'results': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['status', 'requestId', 'field'], 'properties': {'field': {'type': 'string'}, 'status': {'type': 'string', 'const': 'queued'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'success', 'field'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'field': {'type': 'string'}, 'status': {'type': 'string', 'const': 'completed'}, 'success': {'type': 'boolean'}}, 'additionalProperties': False}]}}, 'success': {'type': 'boolean'}, 'requests': {'anyOf': [{'type': 'object', 'required': ['primary', 'all'], 'properties': {'all': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['field', 'requestId', 'status'], 'properties': {'field': {'type': 'string'}, 'status': {'type': 'string', 'const': 'queued'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['requestId', 'type', 'status', 'progress', 'createdAt', 'updatedAt', 'field'], 'properties': {'type': {'enum': ['sync', 'export', 'recompute', 'reclassify'], 'type': 'string'}, 'error': {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'field': {'type': 'string'}, 'result': {'type': 'object', 'required': ['downloadUrl', 'fileSize', 'format'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string'}, 'fileSize': {'type': 'number'}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['pending', 'active', 'delayed', 'completed', 'failed'], 'type': 'string'}, 'progress': {'type': 'number'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'requestId': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'finishedOn': {'type': 'number'}, 'appProgress': {'type': 'object', 'required': ['completed', 'total', 'transactionsSynced'], 'properties': {'total': {'type': 'number'}, 'completed': {'type': 'number'}, 'transactionsSynced': {'type': 'number'}}, 'additionalProperties': False}, 'completedAt': {'type': 'string', 'format': 'date-time'}, 'returnValue': {}}, 'additionalProperties': False}]}}, 'primary': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['primary', 'all'], 'properties': {'all': {'type': 'array', 'items': {'type': 'object', 'required': ['requestId', 'type', 'status', 'progress', 'createdAt', 'updatedAt'], 'properties': {'type': {'enum': ['sync', 'export', 'recompute', 'reclassify'], 'type': 'string'}, 'error': {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'result': {'type': 'object', 'required': ['downloadUrl', 'fileSize', 'format'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string'}, 'fileSize': {'type': 'number'}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['pending', 'active', 'delayed', 'completed', 'failed'], 'type': 'string'}, 'progress': {'type': 'number'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'requestId': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'finishedOn': {'type': 'number'}, 'appProgress': {'type': 'object', 'required': ['completed', 'total', 'transactionsSynced'], 'properties': {'total': {'type': 'number'}, 'completed': {'type': 'number'}, 'transactionsSynced': {'type': 'number'}}, 'additionalProperties': False}, 'completedAt': {'type': 'string', 'format': 'date-time'}, 'returnValue': {}}, 'additionalProperties': False}}, 'primary': {'type': 'string'}}, 'additionalProperties': False}]}, 'statuses': {'type': 'array', 'items': {'type': 'object', 'required': ['requestId', 'type', 'status', 'progress', 'createdAt', 'updatedAt'], 'properties': {'type': {'enum': ['sync', 'export', 'recompute', 'reclassify'], 'type': 'string'}, 'error': {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'result': {'type': 'object', 'required': ['downloadUrl', 'fileSize', 'format'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string'}, 'fileSize': {'type': 'number'}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['pending', 'active', 'delayed', 'completed', 'failed'], 'type': 'string'}, 'progress': {'type': 'number'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'requestId': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'finishedOn': {'type': 'number'}, 'appProgress': {'type': 'object', 'required': ['completed', 'total', 'transactionsSynced'], 'properties': {'total': {'type': 'number'}, 'completed': {'type': 'number'}, 'transactionsSynced': {'type': 'number'}}, 'additionalProperties': False}, 'completedAt': {'type': 'string', 'format': 'date-time'}, 'returnValue': {}}, 'additionalProperties': False}}, 'completed': {'type': 'boolean'}, 'operation': {'enum': ['update_fields', 'update_journal_line', 'set_fmv_override'], 'type': 'string'}, 'requestId': {'type': 'string'}, 'finalState': {'type': 'object', 'required': ['hasError', 'errorTypes', 'suggestedAction'], 'properties': {'hasError': {'type': 'boolean'}, 'errorTypes': {'type': 'array', 'items': {'type': 'string'}}, 'operationType': {'type': 'string'}, 'suggestedAction': {}, 'classificationState': {'type': 'string'}}, 'additionalProperties': False}, 'lineNumber': {'type': 'number'}, 'transactionId': {'type': 'string'}, 'primaryRequestId': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'wallets': {'type': 'array', 'items': {'type': 'object', 'required': ['chainId', 'walletAddress'], 'properties': {'chainId': {'type': 'string', 'description': 'Exact chain ID for the wallet'}, 'walletAddress': {'type': 'string', 'description': 'Exact case-sensitive wallet address'}}, 'additionalProperties': False}, 'description': 'Optional exact wallet pairs; omit to wipe and rebuild every wallet in the portfolio'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['portfolioSlug', 'requestId'], 'properties': {'requestId': {'type': 'string'}, 'portfolioSlug': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['operationTypes', 'transactionStatuses', 'costBasisLotMethods', 'costBasisLotEntryKinds'], 'properties': {'operationTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'description'], 'properties': {'value': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'costBasisLotMethods': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'description'], 'properties': {'value': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'transactionStatuses': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'description'], 'properties': {'value': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'costBasisLotEntryKinds': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'description'], 'properties': {'value': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'assetRef'], 'properties': {'assetRef': {'type': 'string', 'description': 'Asset symbol or canonical asset id'}, 'includeSpam': {'type': 'boolean', 'description': 'Also match assets marked as spam'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['asset', 'currency', 'valuation', 'perWallet', 'totals'], 'properties': {'asset': {'type': 'object', 'required': ['id', 'symbol', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'symbol': {'type': 'string'}}, 'additionalProperties': False}, 'totals': {'type': 'object', 'required': ['quantity', 'walletCount'], 'properties': {'quantity': {'type': 'string'}, 'costBasis': {'type': 'string'}, 'marketValue': {'type': 'string'}, 'walletCount': {'type': 'number'}, 'unrealizedGainLoss': {'type': 'string'}}, 'additionalProperties': False}, 'currency': {'type': 'string'}, 'pricedAt': {'type': 'string'}, 'perWallet': {'type': 'array', 'items': {'type': 'object', 'required': ['chainRef', 'quantity'], 'properties': {'chainRef': {'type': 'string'}, 'quantity': {'type': 'string'}, 'costBasis': {'type': 'string'}, 'walletName': {'type': 'string'}, 'marketValue': {'type': 'string'}, 'walletAddress': {'type': 'string'}, 'unrealizedGainLoss': {'type': 'string'}}, 'additionalProperties': False}}, 'unitPrice': {'type': 'string'}, 'valuation': {'type': 'object', 'required': ['status'], 'properties': {'reason': {'type': 'string'}, 'source': {'enum': ['PORTFOLIO_CURRENCY', 'STABLECOIN_PEG', 'LIVE', 'LAST_CLOSE', 'HISTORICAL_CLOSE'], 'type': 'string'}, 'status': {'enum': ['PRICED', 'UNAVAILABLE'], 'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'filterName'], 'properties': {'mode': {'enum': ['from', 'to'], 'type': 'string', 'description': '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': {'type': 'string', 'maxLength': 4000, 'description': 'Human-readable Portfolio Transactions filter expression. Only for filterName portfolio-transaction-status-counts.'}, 'search': {'type': 'string', 'description': 'Optional case-insensitive text search applied by the provider to labels, addresses, names, or other provider-owned searchable fields. Not for filterName accounts.'}, 'pageSize': {'type': 'integer', 'default': 50, 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Requested number of resources to return. Oversized values are clamped to the route limit. Not for filterName accounts.'}, 'selected': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Stable option value that is already selected in the FilterBar. Example: from:eth-mainnet:0xabc.'}, {'type': 'array', 'items': {'type': 'string', 'minLength': 1, 'description': 'Stable option value that is already selected in the FilterBar. Example: from:eth-mainnet:0xabc.'}}], 'description': '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.'}, 'pageToken': {'type': 'string', 'minLength': 1, 'description': 'Opaque token returned by the previous list response. Not for filterName accounts.'}, 'filterName': {'enum': ['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', 'portfolio-transaction-status-counts', 'portfolio-transaction-warnings', 'accounts'], 'type': 'string', 'description': 'Public filter option provider name.'}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}}, 'description': 'Flattened filter options request schema for all registered filter providers.', 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['data', 'pagination', 'cacheStatus', 'revisionHash'], 'properties': {'data': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['optionKind', 'value', 'label', 'transfersCount', 'identity'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'identity': {'oneOf': [{'type': 'object', 'required': ['category', 'address'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}, 'category': {'type': 'string', 'const': 'counterparty'}, 'chainName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['category', 'address', 'addressBookItemType'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'category': {'type': 'string', 'const': 'addressBook'}, 'addressBookItemType': {'enum': ['CUSTOMER', 'VENDOR', 'EMPLOYEE', 'OTHER'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['category', 'address', 'walletName', 'walletType', 'childAddresses'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}, 'category': {'type': 'string', 'const': 'wallet'}, 'chainName': {'type': 'string', 'minLength': 1}, 'walletName': {'type': 'string'}, 'walletType': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'childAddresses': {'type': 'array', 'items': {'type': 'object', 'required': ['address', 'chainId'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'walletOwnerPortfolio': {'type': 'object', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'slug': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'minLength': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['category', 'address'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}, 'category': {'type': 'string', 'const': 'raw'}, 'chainName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionAddress'}, 'transfersCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'accountNumber', 'name', 'accountType', 'subType', 'currency', 'transactionCount', 'metrics'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'assetId': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}, 'minItems': 1}, 'subType': {'type': 'string', 'minLength': 1}, 'currency': {'type': 'string', 'minLength': 1}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionAccountName'}, 'accountType': {'enum': ['ASSET', 'LIABILITY', 'EQUITY', 'INCOME', 'EXPENSE'], 'type': 'string'}, 'accountNumber': {'type': 'string', 'minLength': 1}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'assetId', 'symbol', 'name', 'totalValue', 'quoteCurrency', 'isSpam', 'metrics'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'isSpam': {'type': 'boolean'}, 'symbol': {'type': 'string', 'minLength': 1}, 'assetId': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionAsset'}, 'totalValue': {'type': 'string', 'pattern': '^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$'}, 'quoteCurrency': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'name', 'counterpartyId', 'lineCount', 'metrics'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}, 'minItems': 1}, 'lineCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionCounterparty'}, 'counterpartyId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'chainId', 'address', 'displayName', 'chainName', 'walletType', 'operationsCount', 'tokenCount', 'isBalanceMatch'], 'properties': {'value': {'type': 'string', 'minLength': 1}, 'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'chainName': {'type': 'string', 'minLength': 1}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionWallet'}, 'tokenCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'valueQuote': {'type': 'string', 'minLength': 1}, 'walletType': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'displayName': {'type': 'string', 'minLength': 1}, 'isBalanceMatch': {'type': 'boolean'}, 'operationsCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'lastTransactionTimestamp': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'responsibilityCenterName', 'responsibilityCenterTypeKey', 'responsibilityCenterTypeName', 'responsibilityCenterKind', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}, 'minItems': 1}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionResponsibilityCenter'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'responsibilityCenterCode': {'type': 'string', 'minLength': 1}, 'responsibilityCenterKind': {'enum': ['COST', 'REVENUE', 'PROFIT', 'INVESTMENT'], 'type': 'string'}, 'responsibilityCenterName': {'type': 'string', 'minLength': 1}, 'responsibilityCenterTypeKey': {'type': 'string', 'pattern': '^[a-z0-9]+(_[a-z0-9]+)*$'}, 'responsibilityCenterTypeName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['withLots', 'withoutLots'], 'type': 'string'}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionLotPresence'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['withJournalEntries', 'withoutJournalEntries'], 'type': 'string'}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionJournalEntryPresence'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['PROPOSED', 'ERROR', 'POSTED', 'CLOSED'], 'type': 'string'}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionStatusCount'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}, 'minItems': 1}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionWarning'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}]}}, 'pagination': {'type': 'object', 'required': ['pageSize'], 'properties': {'pageSize': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'nextPageToken': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'cacheStatus': {'enum': ['hit', 'miss', 'stale', 'bypass'], 'type': 'string'}, 'revisionHash': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['accountNumbers', 'accountTypes', 'subTypes', 'normalBalanceTypes', 'wallets', 'includeNoWallet', 'assets', 'currencies', 'statuses', 'paymentLabelStates', 'hierarchy', 'origins', 'cacheStatus', 'revisionHash'], 'properties': {'assets': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label', 'assetId', 'symbol'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'symbol': {'type': 'string', 'minLength': 1}, 'assetId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'origins': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['SYSTEM_MANAGED', 'SYSTEM_DEFAULT', 'USER_MANAGED'], 'type': 'string'}}, 'additionalProperties': False}}, 'wallets': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label', 'chainId', 'address', 'name'], 'properties': {'name': {'type': 'string'}, 'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'statuses': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['active', 'archived'], 'type': 'string'}}, 'additionalProperties': False}}, 'subTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'hierarchy': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['parent', 'leaf'], 'type': 'string'}}, 'additionalProperties': False}}, 'currencies': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label', 'assetId', 'symbol'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'symbol': {'type': 'string', 'minLength': 1}, 'assetId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'cacheStatus': {'enum': ['hit', 'miss', 'stale', 'bypass'], 'type': 'string'}, 'accountTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['ASSET', 'LIABILITY', 'EQUITY', 'INCOME', 'EXPENSE'], 'type': 'string'}}, 'additionalProperties': False}}, 'revisionHash': {'type': 'string'}, 'accountNumbers': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label', 'accountNumber', 'name'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'accountNumber': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'includeNoWallet': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'const': 'No wallet'}, 'value': {'type': 'string', 'const': 'noWallet'}}, 'additionalProperties': False}, 'normalBalanceTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['DR', 'CR'], 'type': 'string'}}, 'additionalProperties': False}}, 'paymentLabelStates': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['withLabel', 'withoutLabel'], 'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'object', 'required': ['data', 'pagination', 'cacheStatus', 'revisionHash'], 'properties': {'data': {'type': 'array', 'items': {}, 'maxItems': 0, 'minItems': 0}, 'pagination': {'type': 'object', 'required': ['pageSize'], 'properties': {'pageSize': {'type': 'number'}}, 'additionalProperties': False}, 'cacheStatus': {'type': 'string', 'const': 'hit'}, 'revisionHash': {'type': 'string'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['cacheStatus', 'revisionHash'], 'properties': {'data': {'anyOf': [{'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['optionKind', 'value', 'label', 'transfersCount', 'identity'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'identity': {'oneOf': [{'type': 'object', 'required': ['category', 'address'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}, 'category': {'type': 'string', 'const': 'counterparty'}, 'chainName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['category', 'address', 'addressBookItemType'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'category': {'type': 'string', 'const': 'addressBook'}, 'addressBookItemType': {'enum': ['CUSTOMER', 'VENDOR', 'EMPLOYEE', 'OTHER'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['category', 'address', 'walletName', 'walletType', 'childAddresses'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}, 'category': {'type': 'string', 'const': 'wallet'}, 'chainName': {'type': 'string', 'minLength': 1}, 'walletName': {'type': 'string'}, 'walletType': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'childAddresses': {'type': 'array', 'items': {'type': 'object', 'required': ['address', 'chainId'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'walletOwnerPortfolio': {'type': 'object', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'slug': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'minLength': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['category', 'address'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}, 'category': {'type': 'string', 'const': 'raw'}, 'chainName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionAddress'}, 'transfersCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'accountNumber', 'name', 'accountType', 'subType', 'currency', 'transactionCount', 'metrics'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'assetId': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}, 'minItems': 1}, 'subType': {'type': 'string', 'minLength': 1}, 'currency': {'type': 'string', 'minLength': 1}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionAccountName'}, 'accountType': {'enum': ['ASSET', 'LIABILITY', 'EQUITY', 'INCOME', 'EXPENSE'], 'type': 'string'}, 'accountNumber': {'type': 'string', 'minLength': 1}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'assetId', 'symbol', 'name', 'totalValue', 'quoteCurrency', 'isSpam', 'metrics'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'isSpam': {'type': 'boolean'}, 'symbol': {'type': 'string', 'minLength': 1}, 'assetId': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionAsset'}, 'totalValue': {'type': 'string', 'pattern': '^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$'}, 'quoteCurrency': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'name', 'counterpartyId', 'lineCount', 'metrics'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}, 'minItems': 1}, 'lineCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionCounterparty'}, 'counterpartyId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'chainId', 'address', 'displayName', 'chainName', 'walletType', 'operationsCount', 'tokenCount', 'isBalanceMatch'], 'properties': {'value': {'type': 'string', 'minLength': 1}, 'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'chainName': {'type': 'string', 'minLength': 1}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionWallet'}, 'tokenCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'valueQuote': {'type': 'string', 'minLength': 1}, 'walletType': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'displayName': {'type': 'string', 'minLength': 1}, 'isBalanceMatch': {'type': 'boolean'}, 'operationsCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'lastTransactionTimestamp': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'responsibilityCenterName', 'responsibilityCenterTypeKey', 'responsibilityCenterTypeName', 'responsibilityCenterKind', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}, 'minItems': 1}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionResponsibilityCenter'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'responsibilityCenterCode': {'type': 'string', 'minLength': 1}, 'responsibilityCenterKind': {'enum': ['COST', 'REVENUE', 'PROFIT', 'INVESTMENT'], 'type': 'string'}, 'responsibilityCenterName': {'type': 'string', 'minLength': 1}, 'responsibilityCenterTypeKey': {'type': 'string', 'pattern': '^[a-z0-9]+(_[a-z0-9]+)*$'}, 'responsibilityCenterTypeName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['withLots', 'withoutLots'], 'type': 'string'}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionLotPresence'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['withJournalEntries', 'withoutJournalEntries'], 'type': 'string'}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionJournalEntryPresence'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['PROPOSED', 'ERROR', 'POSTED', 'CLOSED'], 'type': 'string'}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionStatusCount'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['optionKind', 'value', 'label', 'transactionCount', 'metrics'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'metrics': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'count'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'currency'], 'properties': {'value': {'type': 'string'}, 'currency': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'money'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['metricKind', 'value', 'unit'], 'properties': {'unit': {'type': 'string', 'const': '%'}, 'value': {'type': 'string'}, 'metricKind': {'type': 'string', 'const': 'percentage'}}, 'additionalProperties': False}]}, 'minItems': 1}, 'optionKind': {'type': 'string', 'const': 'portfolioTransactionWarning'}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}]}}, {'type': 'array', 'items': {}, 'maxItems': 0, 'minItems': 0}]}, 'assets': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label', 'assetId', 'symbol'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'symbol': {'type': 'string', 'minLength': 1}, 'assetId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'origins': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['SYSTEM_MANAGED', 'SYSTEM_DEFAULT', 'USER_MANAGED'], 'type': 'string'}}, 'additionalProperties': False}}, 'wallets': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label', 'chainId', 'address', 'name'], 'properties': {'name': {'type': 'string'}, 'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'statuses': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['active', 'archived'], 'type': 'string'}}, 'additionalProperties': False}}, 'subTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'hierarchy': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['parent', 'leaf'], 'type': 'string'}}, 'additionalProperties': False}}, 'currencies': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label', 'assetId', 'symbol'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'symbol': {'type': 'string', 'minLength': 1}, 'assetId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'pagination': {'anyOf': [{'type': 'object', 'required': ['pageSize'], 'properties': {'pageSize': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'nextPageToken': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['pageSize'], 'properties': {'pageSize': {'type': 'number'}}, 'additionalProperties': False}]}, 'cacheStatus': {'enum': ['hit', 'miss', 'stale', 'bypass'], 'type': 'string'}, 'accountTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['ASSET', 'LIABILITY', 'EQUITY', 'INCOME', 'EXPENSE'], 'type': 'string'}}, 'additionalProperties': False}}, 'revisionHash': {'type': 'string'}, 'accountNumbers': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label', 'accountNumber', 'name'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'minLength': 1}, 'value': {'type': 'string', 'minLength': 1}, 'accountNumber': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'includeNoWallet': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'const': 'No wallet'}, 'value': {'type': 'string', 'const': 'noWallet'}}, 'additionalProperties': False}, 'normalBalanceTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['DR', 'CR'], 'type': 'string'}}, 'additionalProperties': False}}, 'paymentLabelStates': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'value': {'enum': ['withLabel', 'withoutLabel'], 'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {'slug': {'type': 'string', 'description': 'Help article slug to open directly, from a previous get_help search result. Omit when using query.'}, 'limit': {'anyOf': [{'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Maximum number of search results, only used with query'}, {'type': 'string', 'pattern': '^(?:1|2|3|4|5|6|7|8|9|10)$', 'description': 'Maximum number of search results, only used with query Numeric strings are accepted for MCP client compatibility.'}], 'description': 'Maximum number of search results, only used with query'}, 'query': {'type': 'string', 'description': 'Search query for Tokenbooks instructions or accounting guidance. Omit when using slug.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['query', 'results'], 'properties': {'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'excerpt', 'audience', 'relatedTools', 'tags', 'score'], 'properties': {'slug': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'score': {'type': 'number'}, 'title': {'type': 'string'}, 'excerpt': {'type': 'string'}, 'audience': {'enum': ['user', 'agent', 'both'], 'type': 'string'}, 'relatedTools': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'object', 'required': ['slug', 'title', 'summary', 'body', 'audience', 'tags', 'relatedTools', 'relatedConcepts'], 'properties': {'body': {'type': 'string'}, 'slug': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'summary': {'type': 'string'}, 'audience': {'enum': ['user', 'agent', 'both'], 'type': 'string'}, 'relatedTools': {'type': 'array', 'items': {'type': 'string'}}, 'relatedConcepts': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, {'type': 'object', 'required': ['slug', 'error', 'message'], 'properties': {'slug': {'type': 'string'}, 'error': {'type': 'string', 'const': 'not_found'}, 'message': {'type': 'string'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'body': {'type': 'string'}, 'slug': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'error': {'type': 'string', 'const': 'not_found'}, 'query': {'type': 'string'}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'title', 'excerpt', 'audience', 'relatedTools', 'tags', 'score'], 'properties': {'slug': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'score': {'type': 'number'}, 'title': {'type': 'string'}, 'excerpt': {'type': 'string'}, 'audience': {'enum': ['user', 'agent', 'both'], 'type': 'string'}, 'relatedTools': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'summary': {'type': 'string'}, 'audience': {'enum': ['user', 'agent', 'both'], 'type': 'string'}, 'relatedTools': {'type': 'array', 'items': {'type': 'string'}}, 'relatedConcepts': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'journalEntryId'], 'properties': {'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}, 'journalEntryId': {'type': 'string', 'description': 'Journal entry ID'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'timestamp', 'status', 'isAdjustment', 'lines'], 'properties': {'id': {'type': 'string'}, 'memo': {'type': 'string'}, 'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['lineNumber', 'entryType', 'fiatAmount', 'responsibilityCenterAssignments'], 'properties': {'lot': {'type': 'object', 'required': ['id', 'entryId', 'entryKind', 'lotMethod'], 'properties': {'id': {'type': 'string'}, 'entryId': {'type': 'string'}, 'entryKind': {'type': 'string'}, 'lotMethod': {'type': 'string'}}, 'additionalProperties': False}, 'memo': {'type': 'string'}, 'assetId': {'type': 'string'}, 'transfer': {'type': 'object', 'properties': {'txHash': {'type': 'string'}, 'chainId': {'type': 'string'}, 'txIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'entryType': {'type': 'string'}, 'fiatAmount': {'type': 'string'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'accountName': {'type': 'string'}, 'accountType': {'type': 'string'}, 'assetAmount': {'type': 'string'}, 'assetSymbol': {'type': 'string'}, 'accountNumber': {'type': 'string'}, 'accountSubType': {'type': 'string'}, 'counterpartyName': {'type': 'string'}, 'accountNormalBalanceType': {'type': 'string'}, 'responsibilityCenterAssignments': {'type': 'array', 'items': {'type': 'object', 'required': ['responsibilityCenterTypeId', 'responsibilityCenterId', 'value', 'responsibilityCenterType', 'responsibilityCenterName', 'percentageBps'], 'properties': {'value': {'type': 'string'}, 'percentageBps': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'responsibilityCenterId': {'type': 'string'}, 'responsibilityCenterCode': {'type': 'string'}, 'responsibilityCenterName': {'type': 'string'}, 'responsibilityCenterType': {'type': 'object', 'required': ['key', 'name', 'kind'], 'properties': {'key': {'type': 'string'}, 'kind': {'enum': ['COST', 'REVENUE', 'PROFIT', 'INVESTMENT'], 'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, 'responsibilityCenterTypeId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'status': {'type': 'string'}, 'subType': {'type': 'string'}, 'timestamp': {'type': 'string'}, 'systemNotes': {'type': 'string'}, 'isAdjustment': {'type': 'boolean'}, 'operationType': {'type': 'string'}, 'portfolioTransactionId': {'type': 'string'}, 'adjustmentJournalImportProvenance': {'type': 'object', 'required': ['importRef', 'sourceFile', 'sourceRows'], 'properties': {'importRef': {'type': 'string', 'pattern': '^adjustment-journal-import-[a-z0-9-]+$', 'maxLength': 128, 'minLength': 1}, 'sourceFile': {'type': 'object', 'required': ['name', 'uploadedAt', 'uploader'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'uploader': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'uploadedAt': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}, 'sourceRows': {'type': 'array', 'items': {'type': 'object', 'required': ['appliedResolutions', 'entryId', 'journalLineNumber', 'locator', 'normalizedValues', 'sourceRowHash'], 'properties': {'entryId': {'type': 'string', 'minLength': 1}, 'locator': {'oneOf': [{'type': 'object', 'required': ['format', 'lineNumber'], 'properties': {'format': {'type': 'string', 'const': 'csv'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['format', 'rowNumber', 'sheetName'], 'properties': {'format': {'type': 'string', 'const': 'xlsx'}, 'rowNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'sheetName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'sourceRowHash': {'type': 'string', 'minLength': 1}, 'normalizedValues': {'anyOf': [{'type': 'object', 'required': ['schemaVersion', 'values'], 'properties': {'values': {'type': 'object', 'propertyNames': {'anyOf': [{'enum': ['accountNumber', 'amount', 'counterpartyExternalId', 'counterpartyName', 'direction', 'effectiveDate', 'entryId', 'memo'], 'type': 'string'}, {'type': 'string', 'pattern': '^responsibilityCenter:[a-z0-9]+(_[a-z0-9]+)*$'}]}, 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'schemaVersion': {'type': 'number', 'const': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['schemaVersion', 'values'], 'properties': {'values': {'type': 'object', 'propertyNames': {'anyOf': [{'enum': ['accountNumber', 'amount', 'counterpartyExternalId', 'counterpartyName', 'direction', 'effectiveAt', 'effectiveDate', 'entryId', 'memo'], 'type': 'string'}, {'type': 'string', 'pattern': '^responsibilityCenter:[a-z0-9]+(_[a-z0-9]+)*$'}]}, 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'schemaVersion': {'type': 'number', 'const': 2}}, 'additionalProperties': False}]}, 'journalLineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'appliedResolutions': {'type': 'object', 'required': ['schemaVersion', 'values'], 'properties': {'values': {'type': 'object', 'propertyNames': {'anyOf': [{'enum': ['accountNumber', 'counterpartyExternalId', 'counterpartyName'], 'type': 'string'}, {'type': 'string', 'pattern': '^responsibilityCenter:[a-z0-9]+(_[a-z0-9]+)*$'}]}, 'additionalProperties': {'type': 'string', 'minLength': 1}}, 'schemaVersion': {'type': 'number', 'const': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'minItems': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'page': {'type': 'integer', 'description': 'Page number, starting at 1'}, 'sort': {'type': 'string', 'description': 'Single public sort field. Prefix with - for descending. Supported fields: timestamp, diff, value, price'}, 'limit': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field.'}, {'type': 'string', 'pattern': '^(?:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100)$', 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field. Numeric strings are accepted for MCP client compatibility.'}], 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field.'}, 'filter': {'type': 'string', 'description': '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': {'type': 'string', 'description': 'Optional ISO timestamp upper bound'}, 'chainId': {'type': 'string', 'description': 'Exact chain ID when filtering to one wallet; requires walletAddress'}, 'assetRef': {'type': 'string', 'description': 'Deprecated compatibility selector for asset symbol or asset id. Prefer filter=asset_id.'}, 'fromDate': {'type': 'string', 'description': 'Optional ISO timestamp lower bound'}, 'pageSize': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls.'}, {'type': 'string', 'pattern': '^(?:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100)$', 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls. Numeric strings are accepted for MCP client compatibility.'}], 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls.'}, 'entryKind': {'type': 'array', 'items': {'enum': ['ADD', 'DSP', 'CUT', 'MVE', 'RES', 'REL'], 'type': 'string'}, 'description': 'Filter by lot entry kind (any of)'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}, 'walletAddress': {'type': 'string', 'description': 'Exact case-sensitive wallet address when filtering to one wallet; requires chainId'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data', 'pagination'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'entryId', 'timestamp', 'acquisitionTimestamp', 'entryKind', 'lotMethod', 'diff', 'value', 'assetId', 'assetIsSpam', 'portfolioTransactionId', 'walletTransactionTransfers'], 'properties': {'id': {'type': 'string'}, 'diff': {'type': 'string'}, 'price': {'type': 'string'}, 'value': {'type': 'string'}, 'txHash': {'type': 'string', 'minLength': 1}, 'assetId': {'type': 'string'}, 'entryId': {'type': 'string'}, 'assetName': {'type': 'string'}, 'entryKind': {'enum': ['ADD', 'DSP', 'CUT', 'MVE', 'RES', 'REL'], 'type': 'string'}, 'lotMethod': {'type': 'string'}, 'timestamp': {'type': 'string'}, 'positionId': {'type': 'string'}, 'walletName': {'type': 'string'}, 'assetIsSpam': {'type': 'boolean'}, 'assetSymbol': {'type': 'string'}, 'operationType': {'enum': ['DEPOSIT_FIAT', 'INCOME', 'REFUND', 'WITHDRAWAL_FIAT', 'EXPENSE', 'BUY', 'SELL', 'EXCHANGE', 'SWAP', 'MOVE', 'INTERCOMPANY_SEND', 'INTERCOMPANY_RECEIVE', 'STAKE', 'UNSTAKE', 'PROTOCOL_DEPOSIT', 'PROTOCOL_WITHDRAW', 'VAULT_DEPOSIT', 'VAULT_WITHDRAW', 'LP_IN', 'LP_OUT', 'LOAN_BORROW', 'LOAN_REPAY', 'LOAN_LIQUIDATION', 'LEND_GIVE', 'LEND_WITHDRAW', 'ADJUSTMENT', 'UNCATEGORIZED', 'SPAM'], 'type': 'string'}, 'walletAddress': {'type': 'string'}, 'walletChainId': {'type': 'string'}, 'acquisitionTimestamp': {'type': 'string'}, 'portfolioTransactionId': {'type': 'string'}, 'walletTransactionTransfers': {'type': 'array', 'items': {'type': 'object', 'required': ['chainId', 'txHash'], 'properties': {'txHash': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'pagination': {'type': 'object', 'required': ['page', 'pageSize', 'totalCount', 'totalPages'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'pageSize': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'totalCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'totalPages': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['slug', 'name', 'createdAt', 'updatedAt', 'currency', 'accountingConfiguration', 'reportingTimezone'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'currency': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'legalEntityType': {'enum': ['BUSINESS', 'CORPORATION', 'INDIVIDUAL', 'TRUST', 'PARTNERSHIP'], 'type': 'string'}, 'reportingTimezone': {'type': 'string'}, 'accountingConfiguration': {'type': 'object', 'required': ['gasFeeAccountingTreatment', 'isPurchaseTaxable', 'costBasisLotMethod', 'baseCurrency', 'jurisdictionCode', 'stablecoinTreatment', 'costBasisPerWallet', 'defiDepositTreatment', 'separateIncomeExpenseLines', 'financialReportingFramework'], 'properties': {'baseCurrency': {'type': 'string'}, 'jurisdictionCode': {'type': 'string'}, 'isPurchaseTaxable': {'type': 'boolean'}, 'costBasisLotMethod': {'enum': ['FIFO', 'LIFO', 'HIFO', 'ACB'], 'type': 'string'}, 'costBasisPerWallet': {'type': 'boolean'}, 'stablecoinTreatment': {'enum': ['BASE', 'ASSET'], 'type': 'string'}, 'defiDepositTreatment': {'enum': ['TAXABLE_EXCHANGE', 'NON_TAXABLE_RESERVATION'], 'type': 'string'}, 'gasFeeAccountingTreatment': {'enum': ['DISPOSAL_AND_COST_BASIS', 'EXPENSE_ONLY'], 'type': 'string'}, 'separateIncomeExpenseLines': {'type': 'boolean'}, 'financialReportingFramework': {'enum': ['TAX_ONLY', 'US_GAAP_PRE_2025', 'US_GAAP_ASC350_60', 'IFRS_IAS38', 'IFRS_IAS38_REVAL', 'IFRS_IAS2_LCNRV', 'IFRS_IAS2_BROKER_TRADER_FVLCTS', 'ASPE', 'FRS_102', 'AASB_138', 'OTHER'], 'type': 'string', 'default': 'TAX_ONLY'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data', 'allBalancesMatch'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['chainId', 'address', 'isBalanceMatch', 'tokenCount'], 'properties': {'address': {'type': 'string'}, 'chainId': {'type': 'string'}, 'tokenCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'isBalanceMatch': {'type': 'boolean'}, 'lastTransactionTimestamp': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}}, 'allBalancesMatch': {'type': 'boolean'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['isClean', 'counts', 'errorsByType', 'samples'], 'properties': {'counts': {'type': 'object', 'required': ['total', 'uncategorized', 'withErrors', 'spamInvolved'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'withErrors': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'spamInvolved': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'uncategorized': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'isClean': {'type': 'boolean'}, 'samples': {'type': 'object', 'required': ['uncategorized', 'errors'], 'properties': {'errors': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'operationType', 'classification', 'timestamp', 'status', 'tags'], 'properties': {'id': {'type': 'string'}, 'memo': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'type': 'string'}, 'subType': {'type': 'string'}, 'timestamp': {'type': 'string'}, 'errorDetails': {'type': 'array', 'items': {}}, 'errorMessage': {'type': 'string'}, 'operationType': {'type': 'string'}, 'classification': {'type': 'object', 'required': ['state'], 'properties': {'state': {'enum': ['categorized', 'uncategorized', 'error'], 'type': 'string'}, 'detail': {'type': 'string'}, 'reason': {'type': 'string'}, 'suggestedAction': {'type': 'object', 'required': ['description'], 'properties': {'tool': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'uncategorized': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'operationType', 'classification', 'timestamp', 'status', 'tags'], 'properties': {'id': {'type': 'string'}, 'memo': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'type': 'string'}, 'subType': {'type': 'string'}, 'timestamp': {'type': 'string'}, 'errorDetails': {'type': 'array', 'items': {}}, 'errorMessage': {'type': 'string'}, 'operationType': {'type': 'string'}, 'classification': {'type': 'object', 'required': ['state'], 'properties': {'state': {'enum': ['categorized', 'uncategorized', 'error'], 'type': 'string'}, 'detail': {'type': 'string'}, 'reason': {'type': 'string'}, 'suggestedAction': {'type': 'object', 'required': ['description'], 'properties': {'tool': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'errorsByType': {'type': 'array', 'items': {'type': 'object', 'required': ['errorType', 'count'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'errorType': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'requestId'], 'properties': {'requestId': {'type': 'string', 'description': 'Request ID returned by the call that queued the work (e.g. incremental_sync, full_resync, request_report_export)'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}, 'transactionId': {'type': 'string', 'description': 'Optional transaction ID that caused the async request, for agent context'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['requestId', 'type', 'status', 'progress', 'createdAt', 'updatedAt', 'kind'], 'properties': {'kind': {'type': 'string', 'const': 'job'}, 'type': {'enum': ['sync', 'export', 'recompute', 'reclassify'], 'type': 'string'}, 'error': {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'result': {'type': 'object', 'required': ['downloadUrl', 'fileSize', 'format'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string'}, 'fileSize': {'type': 'number'}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['pending', 'active', 'delayed', 'completed', 'failed'], 'type': 'string'}, 'outcome': {'type': 'object', 'required': ['type', 'transactionId', 'hasError', 'errorTypes', 'suggestedAction'], 'properties': {'type': {'type': 'string', 'const': 'portfolio_transaction'}, 'hasError': {'type': 'boolean'}, 'errorTypes': {'type': 'array', 'items': {'type': 'string'}}, 'operationType': {'type': 'string'}, 'transactionId': {'type': 'string'}, 'suggestedAction': {}, 'classificationState': {'type': 'string'}}, 'additionalProperties': False}, 'subject': {'type': 'object', 'required': ['kind', 'transactionId'], 'properties': {'kind': {'type': 'string', 'const': 'portfolio_transaction'}, 'commandType': {'type': 'string'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}, 'progress': {'type': 'number'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'requestId': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'finishedOn': {'type': 'number'}, 'appProgress': {'type': 'object', 'required': ['completed', 'total', 'transactionsSynced'], 'properties': {'total': {'type': 'number'}, 'completed': {'type': 'number'}, 'transactionsSynced': {'type': 'number'}}, 'additionalProperties': False}, 'completedAt': {'type': 'string', 'format': 'date-time'}, 'returnValue': {}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'progressPercent', 'createdAt', 'kind', 'requestId'], 'properties': {'kind': {'type': 'string', 'const': 'report'}, 'error': {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'result': {'oneOf': [{'type': 'object', 'required': ['type', 'totals'], 'properties': {'type': {'type': 'string', 'const': 'totals'}, 'totals': {}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'totals'], 'properties': {'type': {'type': 'string', 'const': 'full'}, 'totals': {}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'rows', 'totals'], 'properties': {'rows': {}, 'type': {'type': 'string', 'const': 'json'}, 'totals': {}, 'totalsOnly': {'type': 'boolean'}}, 'additionalProperties': False}]}, 'status': {'enum': ['pending', 'processing', 'completed', 'failed'], 'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'requestId': {'type': 'string'}, 'completedAt': {'type': 'string', 'format': 'date-time'}, 'progressPercent': {'type': 'number', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['requestId', 'status', 'createdAt', 'kind'], 'properties': {'kind': {'enum': ['job', 'report'], 'type': 'string'}, 'type': {'enum': ['sync', 'export', 'recompute', 'reclassify'], 'type': 'string'}, 'error': {'anyOf': [{'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}, 'result': {'anyOf': [{'type': 'object', 'required': ['downloadUrl', 'fileSize', 'format'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string'}, 'fileSize': {'type': 'number'}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, {'oneOf': [{'type': 'object', 'required': ['type', 'totals'], 'properties': {'type': {'type': 'string', 'const': 'totals'}, 'totals': {}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'totals'], 'properties': {'type': {'type': 'string', 'const': 'full'}, 'totals': {}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'rows', 'totals'], 'properties': {'rows': {}, 'type': {'type': 'string', 'const': 'json'}, 'totals': {}, 'totalsOnly': {'type': 'boolean'}}, 'additionalProperties': False}]}]}, 'status': {'enum': ['pending', 'active', 'delayed', 'completed', 'failed', 'processing'], 'type': 'string'}, 'outcome': {'type': 'object', 'required': ['type', 'transactionId', 'hasError', 'errorTypes', 'suggestedAction'], 'properties': {'type': {'type': 'string', 'const': 'portfolio_transaction'}, 'hasError': {'type': 'boolean'}, 'errorTypes': {'type': 'array', 'items': {'type': 'string'}}, 'operationType': {'type': 'string'}, 'transactionId': {'type': 'string'}, 'suggestedAction': {}, 'classificationState': {'type': 'string'}}, 'additionalProperties': False}, 'subject': {'type': 'object', 'required': ['kind', 'transactionId'], 'properties': {'kind': {'type': 'string', 'const': 'portfolio_transaction'}, 'commandType': {'type': 'string'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}, 'progress': {'type': 'number'}, 'createdAt': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'string', 'format': 'date-time'}]}, 'requestId': {'anyOf': [{'type': 'string'}, {'type': 'string'}]}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'finishedOn': {'type': 'number'}, 'appProgress': {'type': 'object', 'required': ['completed', 'total', 'transactionsSynced'], 'properties': {'total': {'type': 'number'}, 'completed': {'type': 'number'}, 'transactionsSynced': {'type': 'number'}}, 'additionalProperties': False}, 'completedAt': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'string', 'format': 'date-time'}]}, 'returnValue': {}, 'progressPercent': {'type': 'number', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'title', 'summary', 'endpoint', 'documentationUrl', 'authentication', 'notes', 'gettingStarted', 'coverage', 'pricing', 'limitations'], 'properties': {'name': {'type': 'string'}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'pricing': {'type': 'object', 'required': ['url', 'note', 'plans'], 'properties': {'url': {'type': 'string'}, 'note': {'type': 'string'}, 'plans': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['name', 'capacity', 'unlocks'], 'properties': {'name': {'type': 'string'}, 'unlocks': {'type': 'array', 'items': {'type': 'string'}}, 'capacity': {'type': 'string', 'const': 'negotiated'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['name', 'capacity', 'limits', 'unlocks'], 'properties': {'name': {'type': 'string'}, 'limits': {'type': 'object', 'required': ['portfolios', 'wallets', 'transactions'], 'properties': {'wallets': {'type': 'number'}, 'portfolios': {'type': 'number'}, 'transactions': {'type': 'number'}}, 'additionalProperties': False}, 'unlocks': {'type': 'array', 'items': {'type': 'string'}}, 'capacity': {'type': 'string', 'const': 'published'}}, 'additionalProperties': False}]}}}, 'additionalProperties': False}, 'summary': {'type': 'string'}, 'coverage': {'type': 'object', 'required': ['blockchains', 'fiat', 'accountingFrameworks'], 'properties': {'fiat': {'type': 'string'}, 'blockchains': {'type': 'string'}, 'accountingFrameworks': {'type': 'string'}}, 'additionalProperties': False}, 'endpoint': {'type': 'string'}, 'limitations': {'type': 'array', 'items': {'type': 'string'}}, 'authentication': {'type': 'array', 'items': {'type': 'string'}}, 'gettingStarted': {'type': 'object', 'required': ['accessRequirement', 'signUpUrl', 'steps'], 'properties': {'steps': {'type': 'array', 'items': {'type': 'string'}}, 'signUpUrl': {'type': 'string'}, 'accessRequirement': {'type': 'string'}}, 'additionalProperties': False}, 'documentationUrl': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'wallets', 'updatedAt'], 'properties': {'status': {'enum': ['pending', 'processing', 'completed', 'failed'], 'type': 'string'}, 'wallets': {'type': 'array', 'items': {'type': 'object', 'required': ['syncMessages', 'chainId', 'address', 'status', 'progressPercent'], 'properties': {'status': {'enum': ['pending', 'processing', 'completed', 'failed'], 'type': 'string'}, 'address': {'type': 'string'}, 'chainId': {'type': 'string'}, 'lastSyncAt': {'type': 'string', 'format': 'date-time'}, 'errorMessage': {'type': 'string'}, 'syncMessages': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['code', 'message', 'severity', 'details'], 'properties': {'code': {'type': 'string', 'const': 'EXCHANGE_RECONNECT_REQUIRED'}, 'details': {'type': 'object', 'required': ['provider', 'reconnectRequired', 'errorType'], 'properties': {'provider': {'type': 'string', 'minLength': 1}, 'errorType': {'type': 'string', 'const': 'ExternalServiceAuthenticationError'}, 'reconnectRequired': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'message': {'type': 'string', 'minLength': 1}, 'severity': {'enum': ['ERROR', 'WARN'], 'type': 'string', 'default': 'ERROR'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'message', 'severity', 'details'], 'properties': {'code': {'type': 'string', 'const': 'SYNC_PROCESSING_FAILED'}, 'details': {'type': 'object', 'required': ['retryable', 'errorType'], 'properties': {'errorType': {'type': 'string', 'const': 'SyncProcessingError'}, 'retryable': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'message': {'type': 'string', 'minLength': 1}, 'severity': {'enum': ['ERROR', 'WARN'], 'type': 'string', 'default': 'ERROR'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'message', 'severity', 'details'], 'properties': {'code': {'type': 'string', 'const': 'SYNC_WARNING'}, 'details': {'type': 'object', 'required': ['errorType'], 'properties': {'errorType': {'type': 'string', 'const': 'SyncWarning'}}, 'additionalProperties': False}, 'message': {'type': 'string', 'minLength': 1}, 'severity': {'enum': ['ERROR', 'WARN'], 'type': 'string', 'default': 'ERROR'}}, 'additionalProperties': False}]}}, 'progressPercent': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'totalTransactions': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'transactionsSynced': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'startedAt': {'type': 'string', 'format': 'date-time'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'completedAt': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'action', 'contentBase64', 'fileName'], 'properties': {'action': {'enum': ['preview', 'post'], 'type': 'string', 'description': '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': {'type': 'string', 'pattern': '^[^/\\\\]+\\.(?:csv|xlsx)$', 'maxLength': 255, 'minLength': 1, 'description': 'Original CSV or XLSX source filename.'}, 'resolutions': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['accountNumber', 'kind', 'locator'], 'properties': {'kind': {'enum': ['account'], 'type': 'string', 'description': 'Kind of reference this row fixes.'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['format', 'lineNumber'], 'properties': {'format': {'enum': ['csv'], 'type': 'string', 'description': 'Source file format.'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based line number in the CSV file.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['format', 'rowNumber', 'sheetName'], 'properties': {'format': {'enum': ['xlsx'], 'type': 'string', 'description': 'Source file format.'}, 'rowNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based row number within the sheet.'}, 'sheetName': {'type': 'string', 'minLength': 1, 'description': 'Worksheet the row belongs to.'}}, 'additionalProperties': False}]}, 'accountNumber': {'type': 'string', 'minLength': 1, 'description': 'Ledger account to use for that row, from list_journal_line_assignment_options (type: ledger_account).'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['externalId', 'kind', 'locator'], 'properties': {'kind': {'enum': ['counterparty'], 'type': 'string', 'description': 'Kind of reference this row fixes.'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['format', 'lineNumber'], 'properties': {'format': {'enum': ['csv'], 'type': 'string', 'description': 'Source file format.'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based line number in the CSV file.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['format', 'rowNumber', 'sheetName'], 'properties': {'format': {'enum': ['xlsx'], 'type': 'string', 'description': 'Source file format.'}, 'rowNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based row number within the sheet.'}, 'sheetName': {'type': 'string', 'minLength': 1, 'description': 'Worksheet the row belongs to.'}}, 'additionalProperties': False}]}, 'externalId': {'type': 'string', 'minLength': 1, 'description': "Counterparty's external identifier, as recorded on the counterparty."}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'locator', 'name'], 'properties': {'kind': {'enum': ['counterparty'], 'type': 'string', 'description': 'Kind of reference this row fixes.'}, 'name': {'type': 'string', 'minLength': 1, 'description': 'Counterparty name to use for that row, from list_journal_line_assignment_options (type: counterparty).'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['format', 'lineNumber'], 'properties': {'format': {'enum': ['csv'], 'type': 'string', 'description': 'Source file format.'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based line number in the CSV file.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['format', 'rowNumber', 'sheetName'], 'properties': {'format': {'enum': ['xlsx'], 'type': 'string', 'description': 'Source file format.'}, 'rowNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based row number within the sheet.'}, 'sheetName': {'type': 'string', 'minLength': 1, 'description': 'Worksheet the row belongs to.'}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['centerName', 'kind', 'locator', 'typeKey'], 'properties': {'kind': {'enum': ['responsibilityCenter'], 'type': 'string', 'description': 'Kind of reference this row fixes.'}, 'locator': {'oneOf': [{'type': 'object', 'required': ['format', 'lineNumber'], 'properties': {'format': {'enum': ['csv'], 'type': 'string', 'description': 'Source file format.'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based line number in the CSV file.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['format', 'rowNumber', 'sheetName'], 'properties': {'format': {'enum': ['xlsx'], 'type': 'string', 'description': 'Source file format.'}, 'rowNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based row number within the sheet.'}, 'sheetName': {'type': 'string', 'minLength': 1, 'description': 'Worksheet the row belongs to.'}}, 'additionalProperties': False}]}, 'typeKey': {'type': 'string', 'minLength': 1, 'description': 'Responsibility center type the name belongs to, such as costCenter.'}, 'centerName': {'type': 'string', 'minLength': 1, 'description': 'Responsibility center to use for that row, from list_journal_line_assignment_options (type: responsibility_center).'}}, 'additionalProperties': False}]}, 'description': 'Only for action post; required for each.'}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'previewToken': {'type': 'string', 'pattern': '^[0-9a-f]{64}$', 'description': 'Token returned by the matching preview, proving the file has not changed since. Only for action post; required for each.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}, 'contentBase64': {'type': 'string', 'minLength': 1, 'description': 'CSV or XLSX source file content as base64-encoded bytes (max 5 MiB).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'AjIssue': {'anyOf': [{'anyOf': [{'type': 'object', 'required': ['code'], 'properties': {'code': {'enum': ['ADJUSTMENT_JOURNAL_SOURCE_LAYOUT_INVALID', 'ADJUSTMENT_JOURNAL_SOURCE_UNREADABLE'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'locator'], 'properties': {'code': {'enum': ['ADJUSTMENT_JOURNAL_SOURCE_VALUE_INVALID', 'ADJUSTMENT_JOURNAL_REQUIRED_VALUE_MISSING', 'ADJUSTMENT_JOURNAL_EFFECTIVE_DATE_INVALID', 'ADJUSTMENT_JOURNAL_AMOUNT_INVALID', 'ADJUSTMENT_JOURNAL_DEBIT_CREDIT_INVALID', 'ADJUSTMENT_JOURNAL_EFFECTIVE_TIMESTAMP_CONFLICT', 'ADJUSTMENT_JOURNAL_MEMO_CONFLICT', 'ADJUSTMENT_JOURNAL_DEBIT_MISSING', 'ADJUSTMENT_JOURNAL_CREDIT_MISSING', 'ADJUSTMENT_JOURNAL_UNBALANCED'], 'type': 'string'}, 'column': {'type': 'string', 'minLength': 1}, 'entryId': {'type': 'string', 'minLength': 1}, 'locator': {'$ref': '#/$defs/AjLocator'}}, 'additionalProperties': False}]}, {'type': 'object', 'required': ['accountNumber', 'code', 'kind', 'locator'], 'properties': {'code': {'enum': ['ADJUSTMENT_JOURNAL_ACCOUNT_NOT_FOUND_OR_INELIGIBLE', 'ADJUSTMENT_JOURNAL_ACCOUNT_AMBIGUOUS', 'ADJUSTMENT_JOURNAL_ACCOUNT_BASE_CURRENCY_REQUIRED'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'account'}, 'locator': {'$ref': '#/$defs/AjLocator'}, 'accountNumber': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'kind', 'locator', 'reference'], 'properties': {'code': {'enum': ['ADJUSTMENT_JOURNAL_COUNTERPARTY_NOT_FOUND_OR_INELIGIBLE', 'ADJUSTMENT_JOURNAL_COUNTERPARTY_AMBIGUOUS'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'counterparty'}, 'locator': {'$ref': '#/$defs/AjLocator'}, 'reference': {'oneOf': [{'type': 'object', 'required': ['externalId', 'kind'], 'properties': {'kind': {'type': 'string', 'const': 'external-id'}, 'name': {'type': 'string', 'minLength': 1}, 'externalId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'name'], 'properties': {'kind': {'type': 'string', 'const': 'name'}, 'name': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'kind', 'locator', 'name', 'typeKey'], 'properties': {'code': {'enum': ['ADJUSTMENT_JOURNAL_RESPONSIBILITY_CENTER_NOT_FOUND_OR_INELIGIBLE', 'ADJUSTMENT_JOURNAL_RESPONSIBILITY_CENTER_AMBIGUOUS'], 'type': 'string'}, 'kind': {'type': 'string', 'const': 'responsibilityCenter'}, 'name': {'type': 'string', 'minLength': 1}, 'locator': {'$ref': '#/$defs/AjLocator'}, 'typeKey': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'AjLocator': {'oneOf': [{'type': 'object', 'required': ['format', 'lineNumber'], 'properties': {'format': {'type': 'string', 'const': 'csv'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['format', 'rowNumber', 'sheetName'], 'properties': {'format': {'type': 'string', 'const': 'xlsx'}, 'rowNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'sheetName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'AjFullIssues': {'type': 'object', 'required': ['mode', 'items', 'candidates'], 'properties': {'mode': {'type': 'string', 'const': 'full'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/AjIssue'}}, 'candidates': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['accountNumber', 'kind', 'name'], 'properties': {'kind': {'type': 'string', 'const': 'account'}, 'name': {'type': 'string', 'minLength': 1}, 'accountNumber': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'name'], 'properties': {'kind': {'type': 'string', 'const': 'counterparty'}, 'name': {'type': 'string', 'minLength': 1}, 'externalId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'name', 'typeKey', 'typeName'], 'properties': {'kind': {'type': 'string', 'const': 'responsibilityCenter'}, 'name': {'type': 'string', 'minLength': 1}, 'typeKey': {'type': 'string', 'minLength': 1}, 'typeName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}}}, 'additionalProperties': False}, 'AjPostJournal': {'type': 'object', 'required': ['sourceEntryId', 'transactionId'], 'properties': {'sourceEntryId': {'type': 'string', 'minLength': 1}, 'transactionId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'AjIssueSummary': {'type': 'object', 'required': ['mode', 'counts', 'examples', 'omittedIssueCount', 'omittedCandidateCount', 'nextAction'], 'properties': {'mode': {'type': 'string', 'const': 'summary'}, 'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'count'], 'properties': {'code': {'enum': ['ADJUSTMENT_JOURNAL_SOURCE_LAYOUT_INVALID', 'ADJUSTMENT_JOURNAL_SOURCE_UNREADABLE', 'ADJUSTMENT_JOURNAL_SOURCE_VALUE_INVALID', 'ADJUSTMENT_JOURNAL_REQUIRED_VALUE_MISSING', 'ADJUSTMENT_JOURNAL_EFFECTIVE_DATE_INVALID', 'ADJUSTMENT_JOURNAL_AMOUNT_INVALID', 'ADJUSTMENT_JOURNAL_DEBIT_CREDIT_INVALID', 'ADJUSTMENT_JOURNAL_EFFECTIVE_TIMESTAMP_CONFLICT', 'ADJUSTMENT_JOURNAL_MEMO_CONFLICT', 'ADJUSTMENT_JOURNAL_DEBIT_MISSING', 'ADJUSTMENT_JOURNAL_CREDIT_MISSING', 'ADJUSTMENT_JOURNAL_UNBALANCED', 'ADJUSTMENT_JOURNAL_ACCOUNT_NOT_FOUND_OR_INELIGIBLE', 'ADJUSTMENT_JOURNAL_ACCOUNT_AMBIGUOUS', 'ADJUSTMENT_JOURNAL_ACCOUNT_BASE_CURRENCY_REQUIRED', 'ADJUSTMENT_JOURNAL_COUNTERPARTY_NOT_FOUND_OR_INELIGIBLE', 'ADJUSTMENT_JOURNAL_COUNTERPARTY_AMBIGUOUS', 'ADJUSTMENT_JOURNAL_RESPONSIBILITY_CENTER_NOT_FOUND_OR_INELIGIBLE', 'ADJUSTMENT_JOURNAL_RESPONSIBILITY_CENTER_AMBIGUOUS'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'examples': {'type': 'array', 'items': {'$ref': '#/$defs/AjIssue'}, 'maxItems': 5}, 'nextAction': {'type': 'string', 'const': 'Correct the source file, then preview the complete file again before posting.'}, 'omittedIssueCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'omittedCandidateCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'AjPreviewJournal': {'type': 'object', 'required': ['credit', 'debit', 'effectiveDate', 'entryId'], 'properties': {'memo': {'type': 'string', 'minLength': 1}, 'debit': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'credit': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'entryId': {'type': 'string', 'minLength': 1}, 'effectiveDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}}, 'additionalProperties': False}, 'AjPreviewSummary': {'type': 'object', 'required': ['baseCurrency', 'journalCount', 'sourceRowCount', 'totalCredit', 'totalDebit'], 'properties': {'totalDebit': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'totalCredit': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'baseCurrency': {'type': 'string', 'minLength': 1}, 'journalCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'sourceRowCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'oneOf': [{'type': 'object', 'required': ['action', 'previewToken', 'readyToPost', 'summary', 'journals', 'omittedJournalCount', 'issues'], 'properties': {'action': {'type': 'string', 'const': 'preview'}, 'issues': {'oneOf': [{'$ref': '#/$defs/AjFullIssues'}, {'$ref': '#/$defs/AjIssueSummary'}]}, 'summary': {'$ref': '#/$defs/AjPreviewSummary'}, 'journals': {'type': 'array', 'items': {'$ref': '#/$defs/AjPreviewJournal'}, 'maxItems': 3}, 'readyToPost': {'type': 'boolean'}, 'previewToken': {'type': 'string', 'pattern': '^[0-9a-f]{64}$'}, 'omittedJournalCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'importRef', 'createdJournalCount', 'journals', 'omittedJournalCount'], 'properties': {'action': {'type': 'string', 'const': 'post'}, 'journals': {'type': 'array', 'items': {'$ref': '#/$defs/AjPostJournal'}, 'maxItems': 3}, 'importRef': {'type': 'string', 'pattern': '^adjustment-journal-import-[a-z0-9-]+$', 'maxLength': 128, 'minLength': 1}, 'createdJournalCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'omittedJournalCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action', 'journals', 'omittedJournalCount'], 'properties': {'action': {'enum': ['preview', 'post'], 'type': 'string'}, 'issues': {'oneOf': [{'$ref': '#/$defs/AjFullIssues'}, {'$ref': '#/$defs/AjIssueSummary'}]}, 'summary': {'$ref': '#/$defs/AjPreviewSummary'}, 'journals': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/AjPreviewJournal'}, 'maxItems': 3}, {'type': 'array', 'items': {'$ref': '#/$defs/AjPostJournal'}, 'maxItems': 3}]}, 'importRef': {'type': 'string', 'pattern': '^adjustment-journal-import-[a-z0-9-]+$', 'maxLength': 128, 'minLength': 1}, 'readyToPost': {'type': 'boolean'}, 'previewToken': {'type': 'string', 'pattern': '^[0-9a-f]{64}$'}, 'createdJournalCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'omittedJournalCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'wallets': {'type': 'array', 'items': {'type': 'object', 'required': ['chainId', 'walletAddress'], 'properties': {'chainId': {'type': 'string', 'description': 'Exact chain ID for the wallet'}, 'walletAddress': {'type': 'string', 'description': 'Exact case-sensitive wallet address'}}, 'additionalProperties': False}, 'description': 'Optional exact wallet pairs; omit to sync every wallet in the portfolio'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['portfolioSlug', 'requestId'], 'properties': {'requestId': {'type': 'string'}, 'portfolioSlug': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Requested number of resources to return. Oversized values are clamped to the route limit.'}, 'search': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Free-text match against rule names.'}, 'enabled': {'type': 'boolean', 'description': 'Keep only enabled rules, or only disabled ones. Omit to return both.'}, 'ruleRef': {'type': 'string', 'minLength': 1, 'description': 'Saved rule handle, from list_accounting_rules.'}, 'wallets': {'type': 'array', 'items': {'type': 'string', 'minLength': 3, 'description': 'Wallet as chainId:walletAddress, e.g. eth-mainnet:0xabc.'}, 'maxItems': 100, 'description': 'Wallet selectors as chainId:walletAddress values.'}, 'assetIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 100, 'description': 'Asset ids as CSV or repeated query values.'}, 'pageToken': {'type': 'string', 'minLength': 1, 'description': 'Opaque token returned by the previous list response.'}, 'actionTypes': {'type': 'array', 'items': {'enum': ['SET_COUNTERPARTY', 'SET_LEDGER_ACCOUNT', 'SET_RESPONSIBILITY_CENTERS'], 'type': 'string', 'description': 'What a rule changes when it matches.'}, 'maxItems': 25, 'description': 'Action types as CSV or repeated query values.'}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}, 'accountNumbers': {'type': 'array', 'items': {'type': 'string', 'maxLength': 8, 'minLength': 1, 'description': 'Chart-of-accounts number, from list_journal_line_assignment_options (type: ledger_account).'}, 'maxItems': 100, 'description': 'Ledger account numbers as CSV or repeated query values.'}, 'conditionFields': {'type': 'array', 'items': {'enum': ['fromAddressLabel', 'toAddressLabel', 'fromAddress', 'toAddress', 'direction', 'wallet', 'asset', 'assetClass', 'stablecoin', 'chain', 'operationType', 'accountSubType', 'accountNumber', 'counterparty', 'fiatValue', 'entryType', 'accountType'], 'type': 'string', 'description': 'Which part of a transaction the condition tests.'}, 'maxItems': 50, 'description': 'Condition fields as CSV or repeated query values.'}, 'counterpartyNames': {'type': 'array', 'items': {'type': 'string', 'minLength': 1, 'description': 'Counterparty name, from list_journal_line_assignment_options (type: counterparty).'}, 'maxItems': 100, 'description': 'Counterparty names as CSV or repeated query values.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data', 'pagination'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'enabled', 'version', 'hasInvalidDefinition', 'hasUnresolvedReferences', 'createdAt', 'updatedAt', 'ruleRef'], 'properties': {'name': {'type': 'string'}, 'action': {'type': 'object', 'required': ['formatVersion', 'actions'], 'properties': {'actions': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['type', 'target'], 'properties': {'type': {'type': 'string', 'const': 'SET_COUNTERPARTY'}, 'target': {'type': 'string', 'const': 'LINE'}, 'counterpartyName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'target'], 'properties': {'type': {'type': 'string', 'const': 'SET_LEDGER_ACCOUNT'}, 'target': {'type': 'string', 'const': 'LINE'}, 'accountNumber': {'type': 'string', 'maxLength': 8, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'target', 'responsibilityCenterAssignments'], 'properties': {'type': {'type': 'string', 'const': 'SET_RESPONSIBILITY_CENTERS'}, 'target': {'type': 'string', 'const': 'LINE'}, 'responsibilityCenterAssignments': {'type': 'array', 'items': {'type': 'object', 'properties': {'responsibilityCenterName': {'type': 'string', 'minLength': 1}, 'responsibilityCenterTypeKey': {'type': 'string', 'pattern': '^[a-z0-9]+(_[a-z0-9]+)*$'}}, 'additionalProperties': False}, 'minItems': 1}}, 'additionalProperties': False}]}, 'minItems': 1}, 'formatVersion': {'type': 'number', 'const': 1}}, 'additionalProperties': False}, 'enabled': {'type': 'boolean'}, 'ruleRef': {'type': 'string', 'minLength': 1}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'conditions': {'type': 'object', 'required': ['formatVersion', 'all'], 'properties': {'all': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'fromAddressLabel'}, 'value': {'type': 'string', 'minLength': 1}, 'operator': {'enum': ['equals', 'contains', 'notEquals', 'notContains'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'toAddressLabel'}, 'value': {'type': 'string', 'minLength': 1}, 'operator': {'enum': ['equals', 'contains', 'notEquals', 'notContains'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'fromAddress'}, 'value': {'type': 'string', 'minLength': 1}, 'operator': {'enum': ['equals', 'contains'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'toAddress'}, 'value': {'type': 'string', 'minLength': 1}, 'operator': {'enum': ['equals', 'contains'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'direction'}, 'value': {'enum': ['IN', 'OUT', 'GAS'], 'type': 'string'}, 'operator': {'enum': ['equals', 'notEquals'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'asset'}, 'value': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'assetClass'}, 'value': {'type': 'array', 'items': {'enum': ['ERC20', 'FIAT', 'NATIVE', 'REBASE_LST', 'INTEREST_BEARING', 'VALUE_ACCRUING', 'LP_SHARE', 'DEBT', 'REFLECT', 'VOTE_ESCROWED', 'NFT'], 'type': 'string'}, 'minItems': 1}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'stablecoin'}, 'value': {'type': 'boolean'}, 'operator': {'enum': ['equals'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'chain'}, 'value': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'operationType'}, 'value': {'type': 'array', 'items': {'enum': ['DEPOSIT_FIAT', 'INCOME', 'REFUND', 'WITHDRAWAL_FIAT', 'EXPENSE', 'BUY', 'SELL', 'EXCHANGE', 'SWAP', 'MOVE', 'INTERCOMPANY_SEND', 'INTERCOMPANY_RECEIVE', 'STAKE', 'UNSTAKE', 'PROTOCOL_DEPOSIT', 'PROTOCOL_WITHDRAW', 'VAULT_DEPOSIT', 'VAULT_WITHDRAW', 'LP_IN', 'LP_OUT', 'LOAN_BORROW', 'LOAN_REPAY', 'LOAN_LIQUIDATION', 'LEND_GIVE', 'LEND_WITHDRAW', 'ADJUSTMENT', 'UNCATEGORIZED', 'SPAM'], 'type': 'string'}, 'minItems': 1}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'accountSubType'}, 'value': {'type': 'array', 'items': {'enum': ['EXT', 'BNK', 'INC', 'EXP', 'LINT', 'LLIQ', 'LQLOSS', 'CLOSS', 'CBNK', 'CBAS', 'CRE', 'CGL', 'CEXP', 'CINC', 'TRADING_REVENUE', 'COGS', 'INVENTORY_VALUATION_ADJUSTMENT', 'INVENTORY_COGS_ADJUSTMENT', 'INVENTORY_WRITE_DOWN', 'INVENTORY_REMEASUREMENT_GAIN', 'INVENTORY_REMEASUREMENT_LOSS', 'CNP', 'UINC', 'UEXP', 'OFEXP', 'OFINC', 'ICINV', 'CAP', 'UNREALISED_FV_GAIN', 'UNREALISED_FV_LOSS', 'CFVA'], 'type': 'string'}, 'minItems': 1}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string'}}, 'additionalProperties': False}, {'oneOf': [{'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'fiatValue'}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'operator': {'type': 'string', 'const': 'gt'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'fiatValue'}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'operator': {'type': 'string', 'const': 'lt'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'fiatValue'}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'operator': {'type': 'string', 'const': 'gte'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'fiatValue'}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'operator': {'type': 'string', 'const': 'lte'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'fiatValue'}, 'value': {'type': 'array', 'maxItems': 2, 'minItems': 2, 'prefixItems': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}]}, 'operator': {'type': 'string', 'const': 'between'}}, 'additionalProperties': False}]}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'entryType'}, 'value': {'enum': ['DR', 'CR'], 'type': 'string'}, 'operator': {'enum': ['equals'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'accountType'}, 'value': {'type': 'array', 'items': {'enum': ['ASSET', 'LIABILITY', 'EQUITY', 'INCOME', 'EXPENSE'], 'type': 'string'}, 'minItems': 1}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'wallet'}, 'value': {'type': 'array', 'items': {'type': 'object', 'required': ['chainId', 'address'], 'properties': {'address': {'type': 'string', 'minLength': 1}, 'chainId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['operator', 'field', 'value'], 'properties': {'field': {'type': 'string', 'const': 'accountNumber'}, 'value': {'type': 'array', 'items': {'type': 'string', 'maxLength': 8, 'minLength': 1}}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['field', 'operator', 'value'], 'properties': {'field': {'type': 'string', 'const': 'counterparty'}, 'value': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}}, 'operator': {'enum': ['in', 'notIn'], 'type': 'string'}}, 'additionalProperties': False}]}, 'minItems': 1}, 'formatVersion': {'type': 'number', 'const': 1}}, 'additionalProperties': False}, 'hasInvalidDefinition': {'type': 'boolean'}, 'hasUnresolvedReferences': {'type': 'boolean'}}, 'additionalProperties': False}}, 'pagination': {'type': 'object', 'required': ['pageSize'], 'properties': {'pageSize': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'nextPageToken': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {'query': {'type': 'string', 'description': 'Optional chain name, slug, or EVM chain id (e.g. "Optimism", "optimism-mainnet", "10")'}, 'evmOnly': {'type': 'boolean', 'description': 'When true, return only EVM-compatible chains'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['chainRef', 'name', 'isEvm'], 'properties': {'name': {'type': 'string'}, 'isEvm': {'type': 'boolean'}, 'logoUrl': {'type': 'string'}, 'chainRef': {'type': 'string'}, 'evmChainId': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'type'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1 Only for type counterparty.'}, 'type': {'enum': ['ledger_account', 'counterparty', 'responsibility_center'], 'type': 'string', 'description': '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': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field. Only for type counterparty.'}, 'search': {'type': 'string', 'minLength': 1, 'description': 'Filter by name (also matches account number for ledger accounts)'}, 'pageSize': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls. Only for type counterparty.'}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['type', 'accounts'], 'properties': {'type': {'type': 'string', 'const': 'ledger_account'}, 'accounts': {'$ref': '#/properties/accounts'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'counterparties', 'total', 'hasMore'], 'properties': {'type': {'type': 'string', 'const': 'counterparty'}, 'total': {'$ref': '#/properties/total'}, 'hasMore': {'$ref': '#/properties/hasMore'}, 'counterparties': {'$ref': '#/properties/counterparties'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'responsibilityCenters'], 'properties': {'type': {'type': 'string', 'const': 'responsibility_center'}, 'responsibilityCenters': {'$ref': '#/properties/responsibilityCenters'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['type'], 'properties': {'type': {'enum': ['ledger_account', 'counterparty', 'responsibility_center'], 'type': 'string'}, 'total': {'type': 'number'}, 'hasMore': {'type': 'boolean'}, 'accounts': {'type': 'array', 'items': {'type': 'object', 'required': ['accountNumber', 'name', 'accountType', 'currency', 'isActive'], 'properties': {'name': {'type': 'string'}, 'subType': {'type': 'string'}, 'currency': {'type': 'string'}, 'isActive': {'type': 'boolean'}, 'accountType': {'type': 'string'}, 'accountNumber': {'type': 'string'}}, 'additionalProperties': False}}, 'counterparties': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type', 'isActive'], 'properties': {'name': {'type': 'string'}, 'type': {'type': 'string'}, 'isActive': {'type': 'boolean'}}, 'additionalProperties': False}}, 'responsibilityCenters': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'description': {'type': 'string'}, 'responsibilityCenterType': {'type': 'object', 'required': ['key', 'name', 'kind'], 'properties': {'key': {'type': 'string'}, 'kind': {'enum': ['COST', 'REVENUE', 'PROFIT', 'INVESTMENT'], 'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef'], 'properties': {'page': {'type': 'integer', 'description': 'Page number, starting at 1'}, 'limit': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field.'}, {'type': 'string', 'pattern': '^(?:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100)$', 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field. Numeric strings are accepted for MCP client compatibility.'}], 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field.'}, 'query': {'type': 'string', 'description': 'Optional portfolio name or slug search query'}, 'pageSize': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls.'}, {'type': 'string', 'pattern': '^(?:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100)$', 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls. Numeric strings are accepted for MCP client compatibility.'}], 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls.'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data', 'pagination'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'createdAt', 'updatedAt'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}}, 'pagination': {'type': 'object', 'required': ['page', 'pageSize', 'totalCount', 'totalPages'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'pageSize': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'totalCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'totalPages': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'sort': {'enum': ['timestamp', '-timestamp'], 'type': 'string', 'default': '-timestamp', 'description': 'Timestamp sort. Prefix with - for descending order.'}, 'limit': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum Portfolio Transactions to return, maximum 100.'}, {'type': 'string', 'pattern': '^(?:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100)$', 'description': 'Maximum Portfolio Transactions to return, maximum 100. Numeric strings are accepted for MCP client compatibility.'}], 'description': 'Maximum Portfolio Transactions to return, maximum 100.'}, 'isSpam': {'type': 'boolean', 'description': 'true: transfers involve spam tokens; false: non-spam only'}, 'search': {'type': 'string', 'minLength': 1, 'description': 'Free-text search over memo, tx hash, transaction ID'}, 'status': {'type': 'array', 'items': {'enum': ['PROPOSED', 'ERROR', 'POSTED', 'CLOSED'], 'type': 'string'}, 'minItems': 1, 'description': 'Filter by status, e.g. ["POSTED"]'}, 'toDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Optional ISO timestamp upper bound'}, 'txHash': {'type': 'string', 'minLength': 1, 'description': 'Filter by exact on-chain transaction hash'}, 'address': {'type': 'string', 'minLength': 1, 'description': 'Match transfer from/to address (case-insensitive)'}, 'chainId': {'type': 'string', 'minLength': 1, 'description': 'Public wallet chain ID.'}, 'hasLots': {'type': 'boolean', 'description': 'true: produced cost-basis lots; false: did not'}, 'include': {'enum': ['raw', 'rawWithDetails'], 'type': 'string', 'description': 'Include grouped contributing raw source transactions; rawWithDetails adds sanitized provider details and requires transactionId'}, 'subType': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1, 'description': 'Filter by operation sub-type (case-insensitive)'}, 'chainIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1, 'description': 'Optional chain ID filters'}, 'fromDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Optional ISO timestamp lower bound'}, 'hasError': {'type': 'boolean', 'description': 'true: has a processing error; false: error-free'}, 'maxValue': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$', 'description': 'Maximum transfer fiat quote value (inclusive), as a decimal string'}, 'minValue': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$', 'description': 'Minimum transfer fiat quote value (inclusive), as a decimal string'}, 'assetRefs': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1, 'description': 'Filter by asset symbol (case-insensitive)'}, 'errorType': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1, 'description': 'Filter by error/warning code, e.g. ["FmvNotAvailable"]'}, 'pageToken': {'type': 'string', 'minLength': 1, 'description': 'Opaque token returned by the previous list response.'}, 'counterparty': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1, 'description': 'Filter by counterparty name (case-insensitive)'}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}, 'operationType': {'type': 'array', 'items': {'enum': ['DEPOSIT_FIAT', 'INCOME', 'REFUND', 'WITHDRAWAL_FIAT', 'EXPENSE', 'BUY', 'SELL', 'EXCHANGE', 'SWAP', 'MOVE', 'INTERCOMPANY_SEND', 'INTERCOMPANY_RECEIVE', 'STAKE', 'UNSTAKE', 'PROTOCOL_DEPOSIT', 'PROTOCOL_WITHDRAW', 'VAULT_DEPOSIT', 'VAULT_WITHDRAW', 'LP_IN', 'LP_OUT', 'LOAN_BORROW', 'LOAN_REPAY', 'LOAN_LIQUIDATION', 'LEND_GIVE', 'LEND_WITHDRAW', 'ADJUSTMENT', 'UNCATEGORIZED', 'SPAM'], 'type': 'string'}, 'minItems': 1, 'description': 'Filter by operation type, e.g. ["UNCATEGORIZED"]'}, 'transactionId': {'type': 'string', 'minLength': 1, 'description': 'Look up one transaction by handle instead of listing'}, 'walletAddress': {'type': 'string', 'minLength': 1, 'description': 'Public wallet address on the selected chain.'}, 'defiPositionKey': {'type': 'string', 'minLength': 1, 'description': 'Filter by protocol-defined DeFi position key'}, 'hasJournalEntry': {'type': 'boolean', 'description': 'true: has a non-empty journal entry; false: does not'}, 'defiPositionWalletAddress': {'type': 'string', 'minLength': 1, 'description': 'Filter by DeFi position wallet address'}, 'defiPositionWalletChainId': {'type': 'string', 'minLength': 1, 'description': 'Filter by DeFi position wallet chain ID'}, 'responsibilityCenterTypeKeys': {'type': 'array', 'items': {'type': 'string', 'pattern': '^[a-z0-9]+(_[a-z0-9]+)*$', 'description': 'Stable responsibility-center type key. It uses lowercase alphanumeric snake_case segments.'}, 'minItems': 1, 'description': 'Filter by journal-line responsibility-center type key (e.g. primary, goal; from list_journal_line_assignment_options)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'JournalEntryResponseDto': {'type': 'object', 'required': ['id', 'timestamp', 'status', 'isAdjustment', 'lines'], 'properties': {'id': {'type': 'string'}, 'memo': {'type': 'string'}, 'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['lineNumber', 'entryType', 'fiatAmount', 'responsibilityCenterAssignments'], 'properties': {'lot': {'type': 'object', 'required': ['id', 'entryId', 'entryKind', 'lotMethod'], 'properties': {'id': {'type': 'string'}, 'entryId': {'type': 'string'}, 'entryKind': {'type': 'string'}, 'lotMethod': {'type': 'string'}}, 'additionalProperties': False}, 'memo': {'type': 'string'}, 'assetId': {'type': 'string'}, 'transfer': {'type': 'object', 'properties': {'txHash': {'type': 'string'}, 'chainId': {'type': 'string'}, 'txIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'entryType': {'type': 'string'}, 'fiatAmount': {'type': 'string'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'accountName': {'type': 'string'}, 'accountType': {'type': 'string'}, 'assetAmount': {'type': 'string'}, 'assetSymbol': {'type': 'string'}, 'accountNumber': {'type': 'string'}, 'accountSubType': {'type': 'string'}, 'counterpartyName': {'type': 'string'}, 'accountNormalBalanceType': {'type': 'string'}, 'responsibilityCenterAssignments': {'type': 'array', 'items': {'type': 'object', 'required': ['responsibilityCenterTypeId', 'responsibilityCenterId', 'value', 'responsibilityCenterType', 'responsibilityCenterName', 'percentageBps'], 'properties': {'value': {'type': 'string'}, 'percentageBps': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'responsibilityCenterId': {'type': 'string'}, 'responsibilityCenterCode': {'type': 'string'}, 'responsibilityCenterName': {'type': 'string'}, 'responsibilityCenterType': {'type': 'object', 'required': ['key', 'name', 'kind'], 'properties': {'key': {'type': 'string'}, 'kind': {'enum': ['COST', 'REVENUE', 'PROFIT', 'INVESTMENT'], 'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, 'responsibilityCenterTypeId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'status': {'type': 'string'}, 'subType': {'type': 'string'}, 'timestamp': {'type': 'string'}, 'systemNotes': {'type': 'string'}, 'isAdjustment': {'type': 'boolean'}, 'operationType': {'type': 'string'}, 'portfolioTransactionId': {'type': 'string'}, 'adjustmentJournalImportProvenance': {'type': 'object', 'required': ['importRef', 'sourceFile', 'sourceRows'], 'properties': {'importRef': {'type': 'string', 'pattern': '^adjustment-journal-import-[a-z0-9-]+$', 'maxLength': 128, 'minLength': 1}, 'sourceFile': {'type': 'object', 'required': ['name', 'uploadedAt', 'uploader'], 'properties': {'name': {'type': 'string', 'minLength': 1}, 'uploader': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'uploadedAt': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}, 'sourceRows': {'type': 'array', 'items': {'type': 'object', 'required': ['appliedResolutions', 'entryId', 'journalLineNumber', 'locator', 'normalizedValues', 'sourceRowHash'], 'properties': {'entryId': {'type': 'string', 'minLength': 1}, 'locator': {'oneOf': [{'type': 'object', 'required': ['format', 'lineNumber'], 'properties': {'format': {'type': 'string', 'const': 'csv'}, 'lineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['format', 'rowNumber', 'sheetName'], 'properties': {'format': {'type': 'string', 'const': 'xlsx'}, 'rowNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'sheetName': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'sourceRowHash': {'type': 'string', 'minLength': 1}, 'normalizedValues': {'anyOf': [{'type': 'object', 'required': ['schemaVersion', 'values'], 'properties': {'values': {'type': 'object', 'propertyNames': {'anyOf': [{'enum': ['accountNumber', 'amount', 'counterpartyExternalId', 'counterpartyName', 'direction', 'effectiveDate', 'entryId', 'memo'], 'type': 'string'}, {'type': 'string', 'pattern': '^responsibilityCenter:[a-z0-9]+(_[a-z0-9]+)*$'}]}, 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'schemaVersion': {'type': 'number', 'const': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['schemaVersion', 'values'], 'properties': {'values': {'type': 'object', 'propertyNames': {'anyOf': [{'enum': ['accountNumber', 'amount', 'counterpartyExternalId', 'counterpartyName', 'direction', 'effectiveAt', 'effectiveDate', 'entryId', 'memo'], 'type': 'string'}, {'type': 'string', 'pattern': '^responsibilityCenter:[a-z0-9]+(_[a-z0-9]+)*$'}]}, 'additionalProperties': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'schemaVersion': {'type': 'number', 'const': 2}}, 'additionalProperties': False}]}, 'journalLineNumber': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'appliedResolutions': {'type': 'object', 'required': ['schemaVersion', 'values'], 'properties': {'values': {'type': 'object', 'propertyNames': {'anyOf': [{'enum': ['accountNumber', 'counterpartyExternalId', 'counterpartyName'], 'type': 'string'}, {'type': 'string', 'pattern': '^responsibilityCenter:[a-z0-9]+(_[a-z0-9]+)*$'}]}, 'additionalProperties': {'type': 'string', 'minLength': 1}}, 'schemaVersion': {'type': 'number', 'const': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'minItems': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'RawTransactionCompleteDto': {'type': 'object', 'required': ['id', 'wallet', 'hash', 'blockHeight', 'timestamp', 'processingState', 'walletOperations'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'hash': {'type': 'string'}, 'memo': {'type': 'string'}, 'wallet': {'type': 'object', 'required': ['chainId', 'address', 'type'], 'properties': {'name': {'type': 'string'}, 'type': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'address': {'type': 'string'}, 'chainId': {'type': 'string'}}, 'additionalProperties': False}, 'timestamp': {'type': 'string', 'format': 'date-time'}, 'blockHeight': {'type': 'string', 'pattern': '^\\d+$'}, 'processingState': {'enum': ['PROCESSED', 'PARTIAL', 'UNPROCESSED'], 'type': 'string'}, 'walletOperations': {'type': 'array', 'items': {'type': 'object', 'required': ['txIndex', 'type', 'from', 'to', 'token', 'value'], 'properties': {'to': {'type': 'object', 'required': ['address'], 'properties': {'label': {'type': 'string'}, 'address': {'type': 'string'}}, 'additionalProperties': False}, 'defi': {'type': 'object', 'properties': {'operation': {'anyOf': [{'type': 'string', 'const': 'PROTOCOL_DEPOSIT'}, {'type': 'string', 'const': 'PROTOCOL_WITHDRAW'}, {'type': 'string', 'const': 'VAULT_DEPOSIT'}, {'type': 'string', 'const': 'VAULT_WITHDRAW'}, {'type': 'string', 'const': 'SWAP'}, {'type': 'string', 'const': 'PROVIDE_LIQUIDITY'}, {'type': 'string', 'const': 'REMOVE_LIQUIDITY'}, {'type': 'string', 'const': 'LEND'}, {'type': 'string', 'const': 'WITHDRAW_LEND'}, {'type': 'string', 'const': 'LEND_REDUCE'}, {'type': 'string', 'const': 'BORROW'}, {'type': 'string', 'const': 'REPAY'}, {'type': 'string', 'const': 'LOAN_LIQUIDATION'}, {'type': 'string', 'const': 'STAKE'}, {'type': 'string', 'const': 'UNSTAKE'}, {'type': 'string', 'const': 'CLAIM_REWARDS'}]}, 'tokenRole': {'anyOf': [{'type': 'string', 'const': 'UNDERLYING'}, {'type': 'string', 'const': 'COLLATERAL'}, {'type': 'string', 'const': 'RECEIPT_TOKEN'}, {'type': 'string', 'const': 'LP_SHARE'}, {'type': 'string', 'const': 'LIABILITY_TOKEN'}, {'type': 'string', 'const': 'REWARD'}, {'type': 'string', 'const': 'OTHER'}]}, 'positionRef': {'type': 'string'}}, 'additionalProperties': False}, 'from': {'type': 'object', 'required': ['address'], 'properties': {'label': {'type': 'string'}, 'address': {'type': 'string'}}, 'additionalProperties': False}, 'type': {'enum': ['IN', 'OUT', 'GAS', 'SELF'], 'type': 'string'}, 'quote': {'type': 'object', 'properties': {'meta': {'type': 'object', 'required': ['s'], 'properties': {'s': {'enum': ['SYNC_SOURCE', 'FMV_ENGINE', 'DERIVED_REPRESENTED', 'DERIVED_SIBLING', 'POLICY', 'MANUAL'], 'type': 'string'}, 'ts': {'type': 'integer', 'maximum': 8210266876799, 'minimum': 1}}, 'additionalProperties': False}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'source': {'type': 'string'}, 'currency': {'type': 'string'}}, 'additionalProperties': False}, 'token': {'type': 'object', 'required': ['chainId', 'address', 'assetId', 'symbol', 'type', 'decimals', 'isSpam'], 'properties': {'type': {'anyOf': [{'type': 'string', 'const': 'ERC20'}, {'type': 'string', 'const': 'NATIVE'}, {'type': 'string', 'const': 'FIAT'}, {'type': 'string', 'const': 'NFT'}, {'type': 'string', 'const': 'REBASE_LST'}, {'type': 'string', 'const': 'INTEREST_BEARING'}, {'type': 'string', 'const': 'VALUE_ACCRUING'}, {'type': 'string', 'const': 'LP_SHARE'}, {'type': 'string', 'const': 'DEBT'}, {'type': 'string', 'const': 'REFLECT'}, {'type': 'string', 'const': 'VOTE_ESCROWED'}]}, 'isSpam': {'type': 'boolean'}, 'symbol': {'type': 'string'}, 'address': {'type': 'string'}, 'assetId': {'type': 'string'}, 'chainId': {'type': 'string'}, 'decimals': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'representsTokenAddress': {'type': 'string'}, 'stablecoinPeggedFiatCurrency': {'type': 'string'}}, 'additionalProperties': False}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'txIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'portfolioTransactionId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'RawTransactionWithDetailsDto__schema0': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}, {'type': 'array', 'items': {'$ref': '#/$defs/RawTransactionWithDetailsDto__schema0'}}, {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'$ref': '#/$defs/RawTransactionWithDetailsDto__schema0'}}]}}, 'anyOf': [{'type': 'object', 'required': ['data', 'pagination', 'resultType'], 'properties': {'data': {'$ref': '#/properties/data'}, 'pagination': {'$ref': '#/properties/pagination'}, 'resultType': {'type': 'string', 'const': 'transactionList'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['id', 'operationType', 'classification', 'timestamp', 'status', 'tags', 'fileAttachments', 'walletOperations', 'resultType'], 'properties': {'id': {'$ref': '#/properties/id'}, 'memo': {'$ref': '#/properties/memo'}, 'tags': {'$ref': '#/properties/tags'}, 'status': {'$ref': '#/properties/status'}, 'subType': {'$ref': '#/properties/subType'}, 'timestamp': {'$ref': '#/properties/timestamp'}, 'resultType': {'type': 'string', 'const': 'transaction'}, 'systemNotes': {'$ref': '#/properties/systemNotes'}, 'errorDetails': {'$ref': '#/properties/errorDetails'}, 'errorMessage': {'$ref': '#/properties/errorMessage'}, 'journalEntry': {'$ref': '#/properties/journalEntry'}, 'walletSource': {'$ref': '#/properties/walletSource'}, 'operationType': {'$ref': '#/properties/operationType'}, 'classification': {'$ref': '#/properties/classification'}, 'fileAttachments': {'$ref': '#/properties/fileAttachments'}, 'rawTransactions': {'$ref': '#/properties/rawTransactions'}, 'intercompanyPair': {'$ref': '#/properties/intercompanyPair'}, 'walletOperations': {'$ref': '#/properties/walletOperations'}, 'portfolioTransactionContext': {'$ref': '#/properties/portfolioTransactionContext'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['resultType'], 'properties': {'id': {'type': 'string'}, 'data': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'operationType', 'classification', 'timestamp', 'status', 'tags', 'fileAttachments', 'walletOperations'], 'properties': {'id': {'type': 'string'}, 'memo': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'type': 'string'}, 'subType': {'type': 'string'}, 'timestamp': {'type': 'string'}, 'systemNotes': {'type': 'string'}, 'errorDetails': {'type': 'array', 'items': {}}, 'errorMessage': {'type': 'string'}, 'journalEntry': {'$ref': '#/$defs/JournalEntryResponseDto'}, 'walletSource': {'type': 'object', 'required': ['wallet', 'walletType', 'rawTransactionId', 'rawTransactionSource', 'blockHeight', 'timestamp'], 'properties': {'wallet': {'type': 'object', 'required': ['chainId', 'address'], 'properties': {'address': {'type': 'string'}, 'chainId': {'type': 'string'}}, 'additionalProperties': False}, 'timestamp': {'type': 'string'}, 'walletType': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'blockHeight': {'type': 'string'}, 'rawTransactionId': {'type': 'string'}, 'rawTransactionSource': {'type': 'string'}}, 'additionalProperties': False}, 'operationType': {'type': 'string'}, 'classification': {'type': 'object', 'required': ['state'], 'properties': {'state': {'enum': ['categorized', 'uncategorized', 'error'], 'type': 'string'}, 'detail': {'type': 'string'}, 'reason': {'type': 'string'}, 'suggestedAction': {'type': 'object', 'required': ['description'], 'properties': {'tool': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'fileAttachments': {'type': 'array', 'items': {}}, 'rawTransactions': {'type': 'array', 'items': {'$ref': '#/$defs/RawTransactionCompleteDto'}}, 'intercompanyPair': {'type': 'object', 'required': ['pairId', 'side', 'counterpartPortfolioName', 'counterpartPortfolioSlug', 'counterpartPortfolioTransactionId', 'counterpartOperationType', 'counterpartStatus', 'lotLinkCount'], 'properties': {'side': {'enum': ['SEND', 'RECEIVE'], 'type': 'string'}, 'pairId': {'type': 'string'}, 'treatment': {'type': 'string'}, 'lotLinkCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counterpartStatus': {'enum': ['PROPOSED', 'ERROR', 'POSTED', 'CLOSED'], 'type': 'string'}, 'counterpartSubType': {'type': 'string'}, 'counterpartOperationType': {'type': 'string'}, 'counterpartPortfolioName': {'type': 'string'}, 'counterpartPortfolioSlug': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'minLength': 1}, 'counterpartPortfolioTransactionId': {'type': 'string'}}, 'additionalProperties': False}, 'walletOperations': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'txHash', 'chainId', 'txIndex', 'walletTransactionId', 'fromAddress', 'toAddress', 'value', 'tokenAddress', 'isSpam', 'walletName', 'walletAddress'], 'properties': {'type': {'type': 'string'}, 'value': {'type': 'string'}, 'isSpam': {'type': 'boolean'}, 'txHash': {'type': 'string'}, 'assetId': {'type': 'string'}, 'chainId': {'type': 'string'}, 'txIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'quoteMeta': {'type': 'object', 'required': ['s'], 'properties': {'s': {'enum': ['SYNC_SOURCE', 'FMV_ENGINE', 'DERIVED_REPRESENTED', 'DERIVED_SIBLING', 'POLICY', 'MANUAL'], 'type': 'string'}, 'ts': {'type': 'integer', 'maximum': 8210266876799, 'minimum': 1}}, 'additionalProperties': False}, 'toAddress': {'type': 'string'}, 'valueQuote': {'type': 'string'}, 'walletName': {'type': 'string'}, 'assetSymbol': {'type': 'string'}, 'fromAddress': {'type': 'string'}, 'quoteSource': {'type': 'string'}, 'tokenAddress': {'type': 'string'}, 'defiOperation': {'type': 'string'}, 'quoteCurrency': {'type': 'string'}, 'walletAddress': {'type': 'string'}, 'defiPositionId': {'type': 'string'}, 'toAddressLabel': {'type': 'string'}, 'defiPositionRef': {'type': 'string'}, 'fromAddressLabel': {'type': 'string'}, 'walletTransactionId': {'type': 'string'}, 'stablecoinPeggedFiatCurrency': {'type': 'string'}}, 'additionalProperties': False}}, 'portfolioTransactionContext': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}}, 'memo': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'type': 'string'}, 'subType': {'type': 'string'}, 'timestamp': {'type': 'string'}, 'pagination': {'type': 'object', 'required': ['pageSize'], 'properties': {'pageSize': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'nextPageToken': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'resultType': {'enum': ['transactionList', 'transaction'], 'type': 'string'}, 'systemNotes': {'type': 'string'}, 'errorDetails': {'type': 'array', 'items': {}}, 'errorMessage': {'type': 'string'}, 'journalEntry': {'$ref': '#/$defs/JournalEntryResponseDto'}, 'walletSource': {'type': 'object', 'required': ['wallet', 'walletType', 'rawTransactionId', 'rawTransactionSource', 'blockHeight', 'timestamp'], 'properties': {'wallet': {'type': 'object', 'required': ['chainId', 'address'], 'properties': {'address': {'type': 'string'}, 'chainId': {'type': 'string'}}, 'additionalProperties': False}, 'timestamp': {'type': 'string'}, 'walletType': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'blockHeight': {'type': 'string'}, 'rawTransactionId': {'type': 'string'}, 'rawTransactionSource': {'type': 'string'}}, 'additionalProperties': False}, 'operationType': {'type': 'string'}, 'classification': {'type': 'object', 'required': ['state'], 'properties': {'state': {'enum': ['categorized', 'uncategorized', 'error'], 'type': 'string'}, 'detail': {'type': 'string'}, 'reason': {'type': 'string'}, 'suggestedAction': {'type': 'object', 'required': ['description'], 'properties': {'tool': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'fileAttachments': {'type': 'array', 'items': {}}, 'rawTransactions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'wallet', 'hash', 'blockHeight', 'timestamp', 'processingState', 'walletOperations'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'hash': {'type': 'string'}, 'memo': {'type': 'string'}, 'wallet': {'type': 'object', 'required': ['chainId', 'address', 'type'], 'properties': {'name': {'type': 'string'}, 'type': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'address': {'type': 'string'}, 'chainId': {'type': 'string'}}, 'additionalProperties': False}, 'details': {'$ref': '#/$defs/RawTransactionWithDetailsDto__schema0'}, 'timestamp': {'type': 'string', 'format': 'date-time'}, 'blockHeight': {'type': 'string', 'pattern': '^\\d+$'}, 'processingState': {'enum': ['PROCESSED', 'PARTIAL', 'UNPROCESSED'], 'type': 'string'}, 'walletOperations': {'type': 'array', 'items': {'type': 'object', 'required': ['txIndex', 'type', 'from', 'to', 'token', 'value'], 'properties': {'to': {'type': 'object', 'required': ['address'], 'properties': {'label': {'type': 'string'}, 'address': {'type': 'string'}}, 'additionalProperties': False}, 'defi': {'type': 'object', 'properties': {'operation': {'anyOf': [{'type': 'string', 'const': 'PROTOCOL_DEPOSIT'}, {'type': 'string', 'const': 'PROTOCOL_WITHDRAW'}, {'type': 'string', 'const': 'VAULT_DEPOSIT'}, {'type': 'string', 'const': 'VAULT_WITHDRAW'}, {'type': 'string', 'const': 'SWAP'}, {'type': 'string', 'const': 'PROVIDE_LIQUIDITY'}, {'type': 'string', 'const': 'REMOVE_LIQUIDITY'}, {'type': 'string', 'const': 'LEND'}, {'type': 'string', 'const': 'WITHDRAW_LEND'}, {'type': 'string', 'const': 'LEND_REDUCE'}, {'type': 'string', 'const': 'BORROW'}, {'type': 'string', 'const': 'REPAY'}, {'type': 'string', 'const': 'LOAN_LIQUIDATION'}, {'type': 'string', 'const': 'STAKE'}, {'type': 'string', 'const': 'UNSTAKE'}, {'type': 'string', 'const': 'CLAIM_REWARDS'}]}, 'tokenRole': {'anyOf': [{'type': 'string', 'const': 'UNDERLYING'}, {'type': 'string', 'const': 'COLLATERAL'}, {'type': 'string', 'const': 'RECEIPT_TOKEN'}, {'type': 'string', 'const': 'LP_SHARE'}, {'type': 'string', 'const': 'LIABILITY_TOKEN'}, {'type': 'string', 'const': 'REWARD'}, {'type': 'string', 'const': 'OTHER'}]}, 'positionRef': {'type': 'string'}}, 'additionalProperties': False}, 'from': {'type': 'object', 'required': ['address'], 'properties': {'label': {'type': 'string'}, 'address': {'type': 'string'}}, 'additionalProperties': False}, 'type': {'enum': ['IN', 'OUT', 'GAS', 'SELF'], 'type': 'string'}, 'quote': {'type': 'object', 'properties': {'meta': {'type': 'object', 'required': ['s'], 'properties': {'s': {'enum': ['SYNC_SOURCE', 'FMV_ENGINE', 'DERIVED_REPRESENTED', 'DERIVED_SIBLING', 'POLICY', 'MANUAL'], 'type': 'string'}, 'ts': {'type': 'integer', 'maximum': 8210266876799, 'minimum': 1}}, 'additionalProperties': False}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'source': {'type': 'string'}, 'currency': {'type': 'string'}}, 'additionalProperties': False}, 'token': {'type': 'object', 'required': ['chainId', 'address', 'assetId', 'symbol', 'type', 'decimals', 'isSpam'], 'properties': {'type': {'anyOf': [{'type': 'string', 'const': 'ERC20'}, {'type': 'string', 'const': 'NATIVE'}, {'type': 'string', 'const': 'FIAT'}, {'type': 'string', 'const': 'NFT'}, {'type': 'string', 'const': 'REBASE_LST'}, {'type': 'string', 'const': 'INTEREST_BEARING'}, {'type': 'string', 'const': 'VALUE_ACCRUING'}, {'type': 'string', 'const': 'LP_SHARE'}, {'type': 'string', 'const': 'DEBT'}, {'type': 'string', 'const': 'REFLECT'}, {'type': 'string', 'const': 'VOTE_ESCROWED'}]}, 'isSpam': {'type': 'boolean'}, 'symbol': {'type': 'string'}, 'address': {'type': 'string'}, 'assetId': {'type': 'string'}, 'chainId': {'type': 'string'}, 'decimals': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'representsTokenAddress': {'type': 'string'}, 'stablecoinPeggedFiatCurrency': {'type': 'string'}}, 'additionalProperties': False}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'txIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'portfolioTransactionId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'intercompanyPair': {'type': 'object', 'required': ['pairId', 'side', 'counterpartPortfolioName', 'counterpartPortfolioSlug', 'counterpartPortfolioTransactionId', 'counterpartOperationType', 'counterpartStatus', 'lotLinkCount'], 'properties': {'side': {'enum': ['SEND', 'RECEIVE'], 'type': 'string'}, 'pairId': {'type': 'string'}, 'treatment': {'type': 'string'}, 'lotLinkCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'counterpartStatus': {'enum': ['PROPOSED', 'ERROR', 'POSTED', 'CLOSED'], 'type': 'string'}, 'counterpartSubType': {'type': 'string'}, 'counterpartOperationType': {'type': 'string'}, 'counterpartPortfolioName': {'type': 'string'}, 'counterpartPortfolioSlug': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'minLength': 1}, 'counterpartPortfolioTransactionId': {'type': 'string'}}, 'additionalProperties': False}, 'walletOperations': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'txHash', 'chainId', 'txIndex', 'walletTransactionId', 'fromAddress', 'toAddress', 'value', 'tokenAddress', 'isSpam', 'walletName', 'walletAddress'], 'properties': {'type': {'type': 'string'}, 'value': {'type': 'string'}, 'isSpam': {'type': 'boolean'}, 'txHash': {'type': 'string'}, 'assetId': {'type': 'string'}, 'chainId': {'type': 'string'}, 'txIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'quoteMeta': {'type': 'object', 'required': ['s'], 'properties': {'s': {'enum': ['SYNC_SOURCE', 'FMV_ENGINE', 'DERIVED_REPRESENTED', 'DERIVED_SIBLING', 'POLICY', 'MANUAL'], 'type': 'string'}, 'ts': {'type': 'integer', 'maximum': 8210266876799, 'minimum': 1}}, 'additionalProperties': False}, 'toAddress': {'type': 'string'}, 'valueQuote': {'type': 'string'}, 'walletName': {'type': 'string'}, 'assetSymbol': {'type': 'string'}, 'fromAddress': {'type': 'string'}, 'quoteSource': {'type': 'string'}, 'tokenAddress': {'type': 'string'}, 'defiOperation': {'type': 'string'}, 'quoteCurrency': {'type': 'string'}, 'walletAddress': {'type': 'string'}, 'defiPositionId': {'type': 'string'}, 'toAddressLabel': {'type': 'string'}, 'defiPositionRef': {'type': 'string'}, 'fromAddressLabel': {'type': 'string'}, 'walletTransactionId': {'type': 'string'}, 'stablecoinPeggedFiatCurrency': {'type': 'string'}}, 'additionalProperties': False}}, 'portfolioTransactionContext': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'sort': {'enum': ['timestamp', '-timestamp'], 'type': 'string', 'default': '-timestamp', 'description': 'Timestamp order. Use timestamp for ascending or -timestamp for descending; defaults to -timestamp.'}, 'limit': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum raw transaction summaries to return, maximum 100.'}, {'type': 'string', 'pattern': '^(?:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100)$', 'description': 'Maximum raw transaction summaries to return, maximum 100. Numeric strings are accepted for MCP client compatibility.'}], 'description': 'Maximum raw transaction summaries to return, maximum 100.'}, 'toDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Latest transaction timestamp to include, as an ISO 8601 datetime.'}, 'txHash': {'type': 'string', 'description': 'Exact on-chain transaction hash.'}, 'chainId': {'type': 'string', 'minLength': 1, 'description': 'Blockchain to filter by, such as eth-mainnet. Call list_chains for the supported set.'}, 'chainIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'description': 'Blockchains to filter by, such as eth-mainnet. Call list_chains for the supported set.'}, 'fromDate': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Earliest transaction timestamp to include, as an ISO 8601 datetime.'}, 'pageToken': {'type': 'string', 'minLength': 1, 'description': 'Opaque token returned by the previous list response.'}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}, 'walletAddress': {'type': 'string', 'minLength': 1, 'description': 'Wallet to filter by. Supply chainId alongside it.'}, 'includeDetails': {'type': 'boolean', 'default': False, 'description': 'With rawTransactionId, also return blockchain event logs and decoded contract calls'}, 'processingState': {'enum': ['PROCESSED', 'PARTIAL', 'UNPROCESSED'], 'type': 'string', 'description': 'Keep only source transactions in this processing state.'}, 'rawTransactionId': {'type': 'string', 'minLength': 1, 'description': 'Look up one source transaction by handle instead of listing'}, 'includeSpamTokens': {'type': 'boolean', 'default': False, 'description': 'Include transactions whose operations contain only spam tokens; defaults to false.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'RawTransactionWithDetailsDto__schema0': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}, {'type': 'array', 'items': {'$ref': '#/$defs/RawTransactionWithDetailsDto__schema0'}}, {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'$ref': '#/$defs/RawTransactionWithDetailsDto__schema0'}}]}}, 'anyOf': [{'type': 'object', 'required': ['data', 'pagination', 'resultType'], 'properties': {'data': {'$ref': '#/properties/data'}, 'pagination': {'$ref': '#/properties/pagination'}, 'resultType': {'type': 'string', 'const': 'rawTransactionList'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['id', 'wallet', 'hash', 'blockHeight', 'timestamp', 'processingState', 'walletOperations', 'resultType'], 'properties': {'id': {'$ref': '#/properties/id'}, 'hash': {'$ref': '#/properties/hash'}, 'memo': {'$ref': '#/properties/memo'}, 'wallet': {'$ref': '#/properties/wallet'}, 'details': {'$ref': '#/properties/details'}, 'timestamp': {'$ref': '#/properties/timestamp'}, 'resultType': {'type': 'string', 'const': 'rawTransaction'}, 'blockHeight': {'$ref': '#/properties/blockHeight'}, 'processingState': {'$ref': '#/properties/processingState'}, 'walletOperations': {'$ref': '#/properties/walletOperations'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['resultType'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'data': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'wallet', 'hash', 'blockHeight', 'timestamp', 'processingState'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'hash': {'type': 'string'}, 'memo': {'type': 'string'}, 'wallet': {'type': 'object', 'required': ['chainId', 'address', 'type'], 'properties': {'name': {'type': 'string'}, 'type': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'address': {'type': 'string'}, 'chainId': {'type': 'string'}}, 'additionalProperties': False}, 'timestamp': {'type': 'string', 'format': 'date-time'}, 'blockHeight': {'type': 'string', 'pattern': '^\\d+$'}, 'processingState': {'enum': ['PROCESSED', 'PARTIAL', 'UNPROCESSED'], 'type': 'string'}}, 'additionalProperties': False}}, 'hash': {'type': 'string'}, 'memo': {'type': 'string'}, 'wallet': {'type': 'object', 'required': ['chainId', 'address', 'type'], 'properties': {'name': {'type': 'string'}, 'type': {'enum': ['BLOCKCHAIN', 'EXCHANGE', 'BANK'], 'type': 'string'}, 'address': {'type': 'string'}, 'chainId': {'type': 'string'}}, 'additionalProperties': False}, 'details': {'$ref': '#/$defs/RawTransactionWithDetailsDto__schema0'}, 'timestamp': {'type': 'string', 'format': 'date-time'}, 'pagination': {'type': 'object', 'required': ['pageSize'], 'properties': {'pageSize': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'nextPageToken': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'resultType': {'enum': ['rawTransactionList', 'rawTransaction'], 'type': 'string'}, 'blockHeight': {'type': 'string', 'pattern': '^\\d+$'}, 'processingState': {'enum': ['PROCESSED', 'PARTIAL', 'UNPROCESSED'], 'type': 'string'}, 'walletOperations': {'type': 'array', 'items': {'type': 'object', 'required': ['txIndex', 'type', 'from', 'to', 'token', 'value'], 'properties': {'to': {'type': 'object', 'required': ['address'], 'properties': {'label': {'type': 'string'}, 'address': {'type': 'string'}}, 'additionalProperties': False}, 'defi': {'type': 'object', 'properties': {'operation': {'anyOf': [{'type': 'string', 'const': 'PROTOCOL_DEPOSIT'}, {'type': 'string', 'const': 'PROTOCOL_WITHDRAW'}, {'type': 'string', 'const': 'VAULT_DEPOSIT'}, {'type': 'string', 'const': 'VAULT_WITHDRAW'}, {'type': 'string', 'const': 'SWAP'}, {'type': 'string', 'const': 'PROVIDE_LIQUIDITY'}, {'type': 'string', 'const': 'REMOVE_LIQUIDITY'}, {'type': 'string', 'const': 'LEND'}, {'type': 'string', 'const': 'WITHDRAW_LEND'}, {'type': 'string', 'const': 'LEND_REDUCE'}, {'type': 'string', 'const': 'BORROW'}, {'type': 'string', 'const': 'REPAY'}, {'type': 'string', 'const': 'LOAN_LIQUIDATION'}, {'type': 'string', 'const': 'STAKE'}, {'type': 'string', 'const': 'UNSTAKE'}, {'type': 'string', 'const': 'CLAIM_REWARDS'}]}, 'tokenRole': {'anyOf': [{'type': 'string', 'const': 'UNDERLYING'}, {'type': 'string', 'const': 'COLLATERAL'}, {'type': 'string', 'const': 'RECEIPT_TOKEN'}, {'type': 'string', 'const': 'LP_SHARE'}, {'type': 'string', 'const': 'LIABILITY_TOKEN'}, {'type': 'string', 'const': 'REWARD'}, {'type': 'string', 'const': 'OTHER'}]}, 'positionRef': {'type': 'string'}}, 'additionalProperties': False}, 'from': {'type': 'object', 'required': ['address'], 'properties': {'label': {'type': 'string'}, 'address': {'type': 'string'}}, 'additionalProperties': False}, 'type': {'enum': ['IN', 'OUT', 'GAS', 'SELF'], 'type': 'string'}, 'quote': {'type': 'object', 'properties': {'meta': {'type': 'object', 'required': ['s'], 'properties': {'s': {'enum': ['SYNC_SOURCE', 'FMV_ENGINE', 'DERIVED_REPRESENTED', 'DERIVED_SIBLING', 'POLICY', 'MANUAL'], 'type': 'string'}, 'ts': {'type': 'integer', 'maximum': 8210266876799, 'minimum': 1}}, 'additionalProperties': False}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'source': {'type': 'string'}, 'currency': {'type': 'string'}}, 'additionalProperties': False}, 'token': {'type': 'object', 'required': ['chainId', 'address', 'assetId', 'symbol', 'type', 'decimals', 'isSpam'], 'properties': {'type': {'anyOf': [{'type': 'string', 'const': 'ERC20'}, {'type': 'string', 'const': 'NATIVE'}, {'type': 'string', 'const': 'FIAT'}, {'type': 'string', 'const': 'NFT'}, {'type': 'string', 'const': 'REBASE_LST'}, {'type': 'string', 'const': 'INTEREST_BEARING'}, {'type': 'string', 'const': 'VALUE_ACCRUING'}, {'type': 'string', 'const': 'LP_SHARE'}, {'type': 'string', 'const': 'DEBT'}, {'type': 'string', 'const': 'REFLECT'}, {'type': 'string', 'const': 'VOTE_ESCROWED'}]}, 'isSpam': {'type': 'boolean'}, 'symbol': {'type': 'string'}, 'address': {'type': 'string'}, 'assetId': {'type': 'string'}, 'chainId': {'type': 'string'}, 'decimals': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'representsTokenAddress': {'type': 'string'}, 'stablecoinPeggedFiatCurrency': {'type': 'string'}}, 'additionalProperties': False}, 'value': {'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?$'}, 'txIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'portfolioTransactionId': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef'], 'properties': {'page': {'type': 'integer', 'description': 'Page number, starting at 1'}, 'limit': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field.'}, {'type': 'string', 'pattern': '^(?:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100)$', 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field. Numeric strings are accepted for MCP client compatibility.'}], 'description': 'Maximum items to return, maximum 100. Preferred MCP pagination field.'}, 'chainId': {'type': 'string', 'description': 'Optional chain filter, or with walletAddress'}, 'pageSize': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls.'}, {'type': 'string', 'pattern': '^(?:1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100)$', 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls. Numeric strings are accepted for MCP client compatibility.'}], 'description': 'Deprecated alias for limit, maximum 100. Prefer limit for new MCP calls.'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}, 'walletAddress': {'type': 'string', 'description': 'Look up one wallet; requires chainId'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'WalletDetailsResponseDto': {'type': 'object', 'required': ['chainId', 'address', 'createdAt', 'syncMessages', 'syncStatus', 'transactionCount'], 'properties': {'name': {'type': 'string'}, 'address': {'type': 'string'}, 'chainId': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'lastSyncAt': {'type': 'string', 'format': 'date-time'}, 'syncStatus': {'enum': ['pending', 'syncing', 'synced', 'failed'], 'type': 'string'}, 'syncMessages': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['code', 'message', 'severity', 'details'], 'properties': {'code': {'type': 'string', 'const': 'EXCHANGE_RECONNECT_REQUIRED'}, 'details': {'type': 'object', 'required': ['provider', 'reconnectRequired', 'errorType'], 'properties': {'provider': {'type': 'string', 'minLength': 1}, 'errorType': {'type': 'string', 'const': 'ExternalServiceAuthenticationError'}, 'reconnectRequired': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'message': {'type': 'string', 'minLength': 1}, 'severity': {'enum': ['ERROR', 'WARN'], 'type': 'string', 'default': 'ERROR'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'message', 'severity', 'details'], 'properties': {'code': {'type': 'string', 'const': 'SYNC_PROCESSING_FAILED'}, 'details': {'type': 'object', 'required': ['retryable', 'errorType'], 'properties': {'errorType': {'type': 'string', 'const': 'SyncProcessingError'}, 'retryable': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'message': {'type': 'string', 'minLength': 1}, 'severity': {'enum': ['ERROR', 'WARN'], 'type': 'string', 'default': 'ERROR'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'message', 'severity', 'details'], 'properties': {'code': {'type': 'string', 'const': 'SYNC_WARNING'}, 'details': {'type': 'object', 'required': ['errorType'], 'properties': {'errorType': {'type': 'string', 'const': 'SyncWarning'}}, 'additionalProperties': False}, 'message': {'type': 'string', 'minLength': 1}, 'severity': {'enum': ['ERROR', 'WARN'], 'type': 'string', 'default': 'ERROR'}}, 'additionalProperties': False}]}}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}, 'anyOf': [{'type': 'object', 'required': ['data', 'pagination', 'resultType'], 'properties': {'data': {'$ref': '#/properties/data'}, 'pagination': {'$ref': '#/properties/pagination'}, 'resultType': {'type': 'string', 'const': 'walletList'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['chainId', 'address', 'createdAt', 'syncMessages', 'syncStatus', 'transactionCount', 'resultType'], 'properties': {'name': {'$ref': '#/properties/name'}, 'address': {'$ref': '#/properties/address'}, 'chainId': {'$ref': '#/properties/chainId'}, 'createdAt': {'$ref': '#/properties/createdAt'}, 'lastSyncAt': {'$ref': '#/properties/lastSyncAt'}, 'resultType': {'type': 'string', 'const': 'wallet'}, 'syncStatus': {'$ref': '#/properties/syncStatus'}, 'syncMessages': {'$ref': '#/properties/syncMessages'}, 'transactionCount': {'$ref': '#/properties/transactionCount'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['resultType'], 'properties': {'data': {'type': 'array', 'items': {'$ref': '#/$defs/WalletDetailsResponseDto'}}, 'name': {'type': 'string'}, 'address': {'type': 'string'}, 'chainId': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'lastSyncAt': {'type': 'string', 'format': 'date-time'}, 'pagination': {'type': 'object', 'required': ['page', 'pageSize', 'totalCount', 'totalPages'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'pageSize': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'totalCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'totalPages': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'resultType': {'enum': ['walletList', 'wallet'], 'type': 'string'}, 'syncStatus': {'enum': ['pending', 'syncing', 'synced', 'failed'], 'type': 'string'}, 'syncMessages': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['code', 'message', 'severity', 'details'], 'properties': {'code': {'type': 'string', 'const': 'EXCHANGE_RECONNECT_REQUIRED'}, 'details': {'type': 'object', 'required': ['provider', 'reconnectRequired', 'errorType'], 'properties': {'provider': {'type': 'string', 'minLength': 1}, 'errorType': {'type': 'string', 'const': 'ExternalServiceAuthenticationError'}, 'reconnectRequired': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'message': {'type': 'string', 'minLength': 1}, 'severity': {'enum': ['ERROR', 'WARN'], 'type': 'string', 'default': 'ERROR'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'message', 'severity', 'details'], 'properties': {'code': {'type': 'string', 'const': 'SYNC_PROCESSING_FAILED'}, 'details': {'type': 'object', 'required': ['retryable', 'errorType'], 'properties': {'errorType': {'type': 'string', 'const': 'SyncProcessingError'}, 'retryable': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'message': {'type': 'string', 'minLength': 1}, 'severity': {'enum': ['ERROR', 'WARN'], 'type': 'string', 'default': 'ERROR'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'message', 'severity', 'details'], 'properties': {'code': {'type': 'string', 'const': 'SYNC_WARNING'}, 'details': {'type': 'object', 'required': ['errorType'], 'properties': {'errorType': {'type': 'string', 'const': 'SyncWarning'}}, 'additionalProperties': False}, 'message': {'type': 'string', 'minLength': 1}, 'severity': {'enum': ['ERROR', 'WARN'], 'type': 'string', 'default': 'ERROR'}}, 'additionalProperties': False}]}}, 'transactionCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {'query': {'type': 'string', 'description': 'Optional workspace name or slug search query'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'planName', 'role', 'slug', 'usage'], 'properties': {'name': {'type': 'string'}, 'role': {'type': 'string'}, 'slug': {'type': 'string'}, 'usage': {'type': 'object', 'required': ['portfolios', 'transactions', 'users', 'wallets'], 'properties': {'users': {'type': 'number'}, 'wallets': {'type': 'number'}, 'portfolios': {'type': 'number'}, 'transactions': {'type': 'number'}}, 'additionalProperties': False}, 'planName': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'chainId', 'tokenAddress'], 'properties': {'isSpam': {'type': 'boolean', 'description': 'Spam flag to set (default true; false unmarks)'}, 'reason': {'type': 'string', 'description': 'Optional immutable root reason. Nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references.'}, 'chainId': {'type': 'string', 'description': 'Chain ID of the token (from a walletOperation)'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'tokenAddress': {'type': 'string', 'description': 'Token contract address (from a walletOperation)'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['status', 'requestId'], 'properties': {'status': {'type': 'string', 'const': 'queued'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'success'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'completed'}, 'success': {'type': 'boolean'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['queued', 'completed'], 'type': 'string'}, 'success': {'type': 'boolean'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'transactionId', 'operations', 'operationType'], 'properties': {'reason': {'type': 'string', 'description': 'Optional immutable root reason. Nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references.'}, 'subType': {'type': 'string', 'description': 'Optional operation sub-type'}, 'operations': {'type': 'array', 'items': {'type': 'object', 'required': ['walletTransactionId', 'txIndex', 'portfolioTransactionId'], 'properties': {'txIndex': {'type': 'integer', 'description': 'Transfer index within the wallet transaction'}, 'walletTransactionId': {'type': 'string', 'description': 'Wallet transaction handle (from a walletOperation)'}, 'portfolioTransactionId': {'type': 'string', 'description': 'Portfolio transaction the operation currently belongs to'}}, 'additionalProperties': False}, 'description': 'Operations to merge into the target'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}, 'operationType': {'enum': ['DEPOSIT_FIAT', 'INCOME', 'REFUND', 'WITHDRAWAL_FIAT', 'EXPENSE', 'BUY', 'SELL', 'EXCHANGE', 'SWAP', 'MOVE', 'INTERCOMPANY_SEND', 'INTERCOMPANY_RECEIVE', 'STAKE', 'UNSTAKE', 'PROTOCOL_DEPOSIT', 'PROTOCOL_WITHDRAW', 'VAULT_DEPOSIT', 'VAULT_WITHDRAW', 'LP_IN', 'LP_OUT', 'LOAN_BORROW', 'LOAN_REPAY', 'LOAN_LIQUIDATION', 'LEND_GIVE', 'LEND_WITHDRAW', 'ADJUSTMENT', 'UNCATEGORIZED', 'SPAM'], 'type': 'string', 'description': 'Accounting operation type for the merged transaction'}, 'transactionId': {'type': 'string', 'description': 'Target transaction the operations are merged into'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['status', 'requestId', 'transactionId'], 'properties': {'status': {'type': 'string', 'const': 'queued'}, 'requestId': {'type': 'string'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'success', 'transactionId'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'completed'}, 'success': {'type': 'boolean'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'transactionId'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['queued', 'completed'], 'type': 'string'}, 'success': {'type': 'boolean'}, 'requestId': {'type': 'string'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'operations'], 'properties': {'operations': {'type': 'array', 'items': {'type': 'object', 'required': ['portfolioTransactionId', 'walletTransactionId', 'txIndex'], 'properties': {'txIndex': {'type': 'integer', 'maximum': 2147483647, 'minimum': 0, 'description': 'Position of the movement within that source transaction, from the same walletOperation.'}, 'walletTransactionId': {'type': 'string', 'minLength': 1, 'description': 'Source transaction the wallet movement belongs to, from a walletOperation in a read tool result.'}, 'portfolioTransactionId': {'type': 'string', 'minLength': 1, 'description': 'Accounting transaction the movement currently belongs to.'}}, 'additionalProperties': False}, 'minItems': 1, 'description': 'Exact transfer-operation handles returned by transaction reads, including the accounting transaction each operation currently belongs to'}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug inside that workspace. Call list_portfolios to resolve it.'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug. Call list_workspaces to resolve it.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['transactions'], 'properties': {'transactions': {'type': 'array', 'items': {'type': 'object', 'required': ['operationType', 'timestamp', 'operations'], 'properties': {'subType': {'type': 'string'}, 'timestamp': {'type': 'string', 'format': 'date-time'}, 'operations': {'type': 'array', 'items': {'type': 'object', 'required': ['portfolioTransactionId', 'walletTransactionId', 'txIndex'], 'properties': {'txIndex': {'type': 'integer', 'maximum': 2147483647, 'minimum': 0}, 'walletTransactionId': {'type': 'string', 'minLength': 1}, 'portfolioTransactionId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'minItems': 1}, 'systemNotes': {'type': 'string'}, 'operationType': {'enum': ['DEPOSIT_FIAT', 'INCOME', 'REFUND', 'WITHDRAWAL_FIAT', 'EXPENSE', 'BUY', 'SELL', 'EXCHANGE', 'SWAP', 'MOVE', 'INTERCOMPANY_SEND', 'INTERCOMPANY_RECEIVE', 'STAKE', 'UNSTAKE', 'PROTOCOL_DEPOSIT', 'PROTOCOL_WITHDRAW', 'VAULT_DEPOSIT', 'VAULT_WITHDRAW', 'LP_IN', 'LP_OUT', 'LOAN_BORROW', 'LOAN_REPAY', 'LOAN_LIQUIDATION', 'LEND_GIVE', 'LEND_WITHDRAW', 'ADJUSTMENT', 'UNCATEGORIZED', 'SPAM'], 'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'transactionId'], 'properties': {'reason': {'type': 'string', 'minLength': 1, 'description': 'Optional immutable root reason; nonempty bytes are preserved exactly'}, 'timeoutMs': {'type': 'integer', 'maximum': 60000, 'minimum': 1000, 'description': 'Maximum wait time in milliseconds'}, 'portfolioRef': {'type': 'string', 'minLength': 1, 'description': 'Portfolio name or slug'}, 'workspaceRef': {'type': 'string', 'minLength': 1, 'description': 'Workspace name or slug'}, 'transactionId': {'type': 'string', 'minLength': 1, 'description': 'Selected portfolio transaction ID to reprocess'}, 'pollIntervalMs': {'type': 'integer', 'maximum': 5000, 'minimum': 100, 'description': 'Request-status polling interval in milliseconds'}, 'waitForCompletion': {'type': 'boolean', 'description': 'Wait for the queued reprocess request to reach a terminal state before returning'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['status', 'requestId', 'transactionId'], 'properties': {'status': {'type': 'string', 'const': 'queued'}, 'requests': {'type': 'object', 'required': ['primary', 'all'], 'properties': {'all': {'type': 'array', 'items': {'type': 'object', 'required': ['requestId', 'type', 'status', 'progress', 'createdAt', 'updatedAt'], 'properties': {'type': {'enum': ['sync', 'export', 'recompute', 'reclassify'], 'type': 'string'}, 'error': {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'result': {'type': 'object', 'required': ['downloadUrl', 'fileSize', 'format'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string'}, 'fileSize': {'type': 'number'}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['pending', 'active', 'delayed', 'completed', 'failed'], 'type': 'string'}, 'progress': {'type': 'number'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'requestId': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'finishedOn': {'type': 'number'}, 'appProgress': {'type': 'object', 'required': ['completed', 'total', 'transactionsSynced'], 'properties': {'total': {'type': 'number'}, 'completed': {'type': 'number'}, 'transactionsSynced': {'type': 'number'}}, 'additionalProperties': False}, 'completedAt': {'type': 'string', 'format': 'date-time'}, 'returnValue': {}}, 'additionalProperties': False}}, 'primary': {'type': 'string'}}, 'additionalProperties': False}, 'statuses': {'type': 'array', 'items': {'type': 'object', 'required': ['requestId', 'type', 'status', 'progress', 'createdAt', 'updatedAt'], 'properties': {'type': {'enum': ['sync', 'export', 'recompute', 'reclassify'], 'type': 'string'}, 'error': {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'result': {'type': 'object', 'required': ['downloadUrl', 'fileSize', 'format'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string'}, 'fileSize': {'type': 'number'}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['pending', 'active', 'delayed', 'completed', 'failed'], 'type': 'string'}, 'progress': {'type': 'number'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'requestId': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'finishedOn': {'type': 'number'}, 'appProgress': {'type': 'object', 'required': ['completed', 'total', 'transactionsSynced'], 'properties': {'total': {'type': 'number'}, 'completed': {'type': 'number'}, 'transactionsSynced': {'type': 'number'}}, 'additionalProperties': False}, 'completedAt': {'type': 'string', 'format': 'date-time'}, 'returnValue': {}}, 'additionalProperties': False}}, 'completed': {'type': 'boolean'}, 'requestId': {'type': 'string'}, 'finalState': {'type': 'object', 'required': ['hasError', 'errorTypes', 'suggestedAction'], 'properties': {'hasError': {'type': 'boolean'}, 'errorTypes': {'type': 'array', 'items': {'type': 'string'}}, 'operationType': {'type': 'string'}, 'suggestedAction': {}, 'classificationState': {'type': 'string'}}, 'additionalProperties': False}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'success', 'transactionId'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'completed'}, 'success': {'type': 'boolean'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'transactionId'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['queued', 'completed'], 'type': 'string'}, 'success': {'type': 'boolean'}, 'requests': {'type': 'object', 'required': ['primary', 'all'], 'properties': {'all': {'type': 'array', 'items': {'type': 'object', 'required': ['requestId', 'type', 'status', 'progress', 'createdAt', 'updatedAt'], 'properties': {'type': {'enum': ['sync', 'export', 'recompute', 'reclassify'], 'type': 'string'}, 'error': {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'result': {'type': 'object', 'required': ['downloadUrl', 'fileSize', 'format'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string'}, 'fileSize': {'type': 'number'}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['pending', 'active', 'delayed', 'completed', 'failed'], 'type': 'string'}, 'progress': {'type': 'number'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'requestId': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'finishedOn': {'type': 'number'}, 'appProgress': {'type': 'object', 'required': ['completed', 'total', 'transactionsSynced'], 'properties': {'total': {'type': 'number'}, 'completed': {'type': 'number'}, 'transactionsSynced': {'type': 'number'}}, 'additionalProperties': False}, 'completedAt': {'type': 'string', 'format': 'date-time'}, 'returnValue': {}}, 'additionalProperties': False}}, 'primary': {'type': 'string'}}, 'additionalProperties': False}, 'statuses': {'type': 'array', 'items': {'type': 'object', 'required': ['requestId', 'type', 'status', 'progress', 'createdAt', 'updatedAt'], 'properties': {'type': {'enum': ['sync', 'export', 'recompute', 'reclassify'], 'type': 'string'}, 'error': {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message', 'requestId'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'requestId': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'result': {'type': 'object', 'required': ['downloadUrl', 'fileSize', 'format'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string'}, 'fileSize': {'type': 'number'}, 'downloadUrl': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['pending', 'active', 'delayed', 'completed', 'failed'], 'type': 'string'}, 'progress': {'type': 'number'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'requestId': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'finishedOn': {'type': 'number'}, 'appProgress': {'type': 'object', 'required': ['completed', 'total', 'transactionsSynced'], 'properties': {'total': {'type': 'number'}, 'completed': {'type': 'number'}, 'transactionsSynced': {'type': 'number'}}, 'additionalProperties': False}, 'completedAt': {'type': 'string', 'format': 'date-time'}, 'returnValue': {}}, 'additionalProperties': False}}, 'completed': {'type': 'boolean'}, 'requestId': {'type': 'string'}, 'finalState': {'type': 'object', 'required': ['hasError', 'errorTypes', 'suggestedAction'], 'properties': {'hasError': {'type': 'boolean'}, 'errorTypes': {'type': 'array', 'items': {'type': 'string'}}, 'operationType': {'type': 'string'}, 'suggestedAction': {}, 'classificationState': {'type': 'string'}}, 'additionalProperties': False}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'reportType', 'format', 'fromDate', 'toDate'], 'properties': {'format': {'enum': ['xlsx', 'pdf', 'json'], 'type': 'string', 'description': 'Export format'}, 'toDate': {'type': 'string', 'description': 'Report period end ISO timestamp'}, 'fromDate': {'type': 'string', 'description': 'Report period start ISO timestamp'}, 'reportType': {'enum': ['transactions', 'journal-entries', 'gains-losses', 'cost-basis-ledger', 'income-expense', 'profit-and-loss', 'statement', 'balance-sheet', 'trial-balance'], 'type': 'string', 'description': 'Report type'}, 'totalsOnly': {'type': 'boolean', 'description': 'Return summary only when true'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['requestId'], 'properties': {'requestId': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'network', 'receivingAmount'], 'properties': {'network': {'enum': ['SWIFT', 'ACH', 'SEPA', 'FPS', 'EFT', 'FAST', 'CHATS', 'KFTC', 'ZENGIN', 'INSTAPAY', 'PESONET', 'PROMPTPAY', 'BECS', 'IMPS', 'NEFT', 'BI-FAST', 'UAEFTS', 'SPEI', 'SPID', 'PIX'], 'type': 'string', 'description': 'Fiat payout rail / bank method'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}, 'senderCurrency': {'enum': ['USDC', 'USDT', 'USDe'], 'type': 'string', 'description': 'Stablecoin funding the payout (default USDC)'}, 'receivingAmount': {'type': 'string', 'description': 'Amount the recipient should receive, as a decimal string in the receiving currency (e.g. "500000")'}, 'purposeOfPayment': {'enum': ['payment_for_goods', 'payment_for_business_services', 'payment_for_salary_or_benefits', 'capital_investment_or_item', 'other'], 'type': 'string', 'description': 'Purpose-of-payment classification'}, 'receivingCurrency': {'type': 'string', 'description': 'ISO 4217 receiving currency; defaults to the network default'}, 'recipientBankCountry': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 recipient bank country; defaults to the network default'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'corridor'], 'properties': {'note': {'type': 'string'}, 'quote': {'type': 'object', 'required': ['exchangeRate', 'senderCurrency', 'receivingCurrency', 'processingFee', 'itemizedFees', 'totalReceivable', 'quoteValiditySeconds', 'summary'], 'properties': {'summary': {'type': 'string'}, 'exchangeRate': {'type': 'string'}, 'itemizedFees': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'amount'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'amount': {'type': 'string'}, 'percentage': {'type': 'string'}}, 'additionalProperties': False}}, 'processingFee': {'type': 'string'}, 'senderCurrency': {'type': 'string'}, 'totalReceivable': {'type': 'string'}, 'receivingCurrency': {'type': 'string'}, 'quoteValiditySeconds': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'status': {'enum': ['quoted', 'corridor_unavailable', 'amount_out_of_range', 'limit_skipped'], 'type': 'string'}, 'corridor': {'type': 'object', 'required': ['network', 'receivingCurrency', 'recipientBankCountry', 'senderCurrency'], 'properties': {'network': {'type': 'string'}, 'amountBounds': {'type': 'object', 'required': ['minAmount', 'maxAmount'], 'properties': {'maxAmount': {'type': 'string'}, 'minAmount': {'type': 'string'}}, 'additionalProperties': False}, 'senderCurrency': {'type': 'string'}, 'receivingCurrency': {'type': 'string'}, 'recipientBankCountry': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['workspaceRef', 'portfolioRef', 'transactionId', 'operations', 'operationType'], 'properties': {'reason': {'type': 'string', 'description': 'Optional immutable root reason. Nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references.'}, 'subType': {'type': 'string', 'description': 'Optional operation sub-type'}, 'operations': {'type': 'array', 'items': {'type': 'object', 'required': ['walletTransactionId', 'txIndex', 'portfolioTransactionId'], 'properties': {'txIndex': {'type': 'integer', 'description': 'Transfer index within the wallet transaction'}, 'walletTransactionId': {'type': 'string', 'description': 'Wallet transaction handle (from a walletOperation)'}, 'portfolioTransactionId': {'type': 'string', 'description': 'Portfolio transaction the operation currently belongs to'}}, 'additionalProperties': False}, 'description': 'Whole existing operation handles to move unchanged into a new transaction; do not use this to divide one normalized transfer amount into new economic legs'}, 'portfolioRef': {'type': 'string', 'description': 'Portfolio exact name or slug'}, 'workspaceRef': {'type': 'string', 'description': 'Workspace exact name or slug'}, 'operationType': {'enum': ['DEPOSIT_FIAT', 'INCOME', 'REFUND', 'WITHDRAWAL_FIAT', 'EXPENSE', 'BUY', 'SELL', 'EXCHANGE', 'SWAP', 'MOVE', 'INTERCOMPANY_SEND', 'INTERCOMPANY_RECEIVE', 'STAKE', 'UNSTAKE', 'PROTOCOL_DEPOSIT', 'PROTOCOL_WITHDRAW', 'VAULT_DEPOSIT', 'VAULT_WITHDRAW', 'LP_IN', 'LP_OUT', 'LOAN_BORROW', 'LOAN_REPAY', 'LOAN_LIQUIDATION', 'LEND_GIVE', 'LEND_WITHDRAW', 'ADJUSTMENT', 'UNCATEGORIZED', 'SPAM'], 'type': 'string', 'description': 'Accounting operation type for the new transaction'}, 'transactionId': {'type': 'string', 'description': 'Source transaction to split operations out of'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['status', 'requestId', 'transactionId'], 'properties': {'status': {'type': 'string', 'const': 'queued'}, 'requestId': {'type': 'string'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'success', 'transactionId'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'type': 'string', 'const': 'completed'}, 'success': {'type': 'boolean'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'transactionId'], 'properties': {'error': {'type': 'object', 'required': ['name', 'message'], 'properties': {'name': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'status': {'enum': ['queued', 'completed'], 'type': 'string'}, 'success': {'type': 'boolean'}, 'requestId': {'type': 'string'}, 'transactionId': {'type': 'string'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
FortFi Treasury MCP
Provides policy-controlled crypto treasury operations across chains, including wallets, payments, token discovery, swaps, bridges…
Gate DEX MCP
Supports wallet authentication, blockchain RPC access, token and market data, transaction construction, transfers, swaps, approva…
xrploracle
Provides XRPL intelligence for payments, accounts, DEX and AMM liquidity, escrows, NFTs, validators, issued-token compliance, and…
Liquid Agent
Provides USDC bridge quotes and tracking, cross-chain balance checks, gas sponsorship information, tokenized stock portfolio oper…
Inferventis MCP Server
Provides financial calculations, stock and cryptocurrency prices, currency conversion, banking transactions, and Stripe payment d…
Bity
Connects to Bity accounts for cryptocurrency and fiat balances, market tickers, order books, trades, open orders, executed orders…
wallet
Provides account balances, stock-token prices and quotes, USDG trade information, and on-chain payment settlement records.
SAP MCP Server
Provides an MCP gateway connecting SAP-related tools with Solana, DeFi, decentralized identity, and x402 payments.