Skip to main content
Glama

Tokenbooks - crypto and fiat accounting and payments

Edit Transaction

edit_transaction

Create manual source transactions (signed wallet movements; duplicate hashes refused; accounting asynchronous), or change one accounting transaction: memo/tags/type, journal lines or unit fair market value. Read line numbers/list_journal_line_assignment_options first. Track requestIds or waitForCompletion for fields/FMV edits.

Input Schema

NameRequiredDescriptionDefault
memoNoNew memo; pass null to clear it Only for operation update_fields.
tagsNoReplace ALL tags. Only for operation update_fields.
reasonNoImmutable root reason whose nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references Only for operation set_fmv_override.
walletNoOnly for operation create_manual; required for each.
assetIdNoAsset ID from read tools (e.g. eth_1). Only for operation set_fmv_override; required for each.
subTypeNoNew operation sub-type (requires operationType) Only for operation update_fields.
operationYescreate_manual: Create manual sources. update_fields: Edit memo/tags/type. update_journal_line: Assign journal line. set_fmv_override: Override unit FMV.
timeoutMsNoWait ms; default 30000. Only for operation update_fields, set_fmv_override.
lineNumberNoJournal entry line number (1-based) Only for operation update_journal_line; required for each.
quoteSourceNoPrice source/reason. Only for operation set_fmv_override.
portfolioRefYesPortfolio name or slug inside that workspace. Call list_portfolios to resolve it.
transactionsNovalueQuote: signed TOTAL FMV, not unit price Only for operation create_manual; required for each.
workspaceRefYesWorkspace name or slug. Call list_workspaces to resolve it.
accountNumberNoAccount number from list_journal_line_assignment_options (ledger_account). Only for operation update_journal_line.
newValueQuoteNoExact unit price in base currency. Only for operation set_fmv_override; required for each.
operationTypeNoNew accounting operation type Only for operation update_fields.
quoteCurrencyNoCurrency; default base currency. Only for operation set_fmv_override.
transactionIdNoPortfolio transaction ID Only for operation update_fields, update_journal_line, set_fmv_override; required for each.
pollIntervalMsNoPoll ms; default 500. Only for operation update_fields, set_fmv_override.
counterpartyNameNoCounterparty name to assign; pass null to unset Only for operation update_journal_line.
waitForCompletionNoWait for final state. Only for operation update_fields, set_fmv_override.
responsibilityCenterAssignmentsNoReplace assignments, one per dimension; [] clears all. Keys/names: list_journal_line_assignment_options (responsibility_center). Only for operation update_journal_line.

Output Schema

NameRequiredDescriptionDefault
errorNo
failedNo
statusNo
createdNo
resultsNo
skippedNo
successNo
replacedNo
requestsNo
statusesNo
completedNo
operationYes
requestIdNo
finalStateNo
lineNumberNo
transactionIdNo
primaryRequestIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / operationType / enum
      Previous value: -[
      -  "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"
      -]New value: +[
      +  "DEPOSIT_FIAT",
      +  "INCOME",
      +  "REFUND",
      +  "REBATE",
      +  "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"
      +]
  2. Changed28 schema fields changed
    • addedInput schema / definitions
      Added value: +{
      +  "RawWalletTransactionImportRequestDto__schema0": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "boolean"
      +      },
      +      {
      +        "enum": [
      +          null
      +        ],
      +        "nullable": true,
      +        "type": "string"
      +      },
      +      {
      +        "items": {
      +          "allOf": [
      +            {
      +              "$ref": "#/definitions/RawWalletTransactionImportRequestDto__schema0"
      +            }
      +          ]
      +        },
      +        "type": "array"
      +      },
      +      {
      +        "additionalProperties": {
      +          "allOf": [
      +            {
      +              "$ref": "#/definitions/RawWalletTransactionImportRequestDto__schema0"
      +            }
      +          ]
      +        },
      +        "type": "object"
      +      }
      +    ]
      +  }
      +}
    • changedInput schema / properties / accountNumber / description
      Previous value: -"Chart-of-accounts number to assign (from list_journal_line_assignment_options, type: ledger_account) Only for operation update_journal_line."New value: +"Account number from list_journal_line_assignment_options (ledger_account). Only for operation update_journal_line."
    • changedInput schema / properties / assetId / description
      Previous value: -"Asset ID to override (e.g. eth_1, as returned by the read tools) Only for operation set_fmv_override; required for each."New value: +"Asset ID from read tools (e.g. eth_1). Only for operation set_fmv_override; required for each."
    • changedInput schema / properties / newValueQuote / description
      Previous value: -"Exact per-unit decimal string in base currency, e.g. \"0\". Do not use price. Only for operation set_fmv_override; required for each."New value: +"Exact unit price in base currency. Only for operation set_fmv_override; required for each."
    • changedInput schema / properties / operation / description
      Previous value: -"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."New value: +"create_manual: Create manual sources. update_fields: Edit memo/tags/type. update_journal_line: Assign journal line. set_fmv_override: Override unit FMV."
    • changedInput schema / properties / operation / enum
      Previous value: -[
      -  "update_fields",
      -  "update_journal_line",
      -  "set_fmv_override"
      -]New value: +[
      +  "create_manual",
      +  "update_fields",
      +  "update_journal_line",
      +  "set_fmv_override"
      +]
    • changedInput schema / properties / pollIntervalMs / description
      Previous value: -"Polling interval in milliseconds, 100 to 5000 (default 500) Not for operation update_journal_line."New value: +"Poll ms; default 500. Only for operation update_fields, set_fmv_override."
    • changedInput schema / properties / quoteCurrency / description
      Previous value: -"Optional quote currency (defaults to base currency) Only for operation set_fmv_override."New value: +"Currency; default base currency. Only for operation set_fmv_override."
    • changedInput schema / properties / quoteSource / description
      Previous value: -"Optional source/justification for the price Only for operation set_fmv_override."New value: +"Price source/reason. Only for operation set_fmv_override."
    • changedInput schema / properties / responsibilityCenterAssignments / description
      Previous value: -"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."New value: +"Replace assignments, one per dimension; [] clears all. Keys/names: list_journal_line_assignment_options (responsibility_center). Only for operation update_journal_line."
    • changedInput schema / properties / responsibilityCenterAssignments / items / properties / responsibilityCenterName / description
      Previous value: -"Responsibility-center name within that type"New value: +"Center name."
    • changedInput schema / properties / responsibilityCenterAssignments / items / properties / responsibilityCenterTypeKey / description
      Previous value: -"Responsibility-center type key / dimension slug, e.g. primary, goal"New value: +"Dimension key, e.g. primary."
    • changedInput schema / properties / tags / description
      Previous value: -"Replace the full set of transaction tags Only for operation update_fields."New value: +"Replace ALL tags. Only for operation update_fields."
    • changedInput schema / properties / timeoutMs / description
      Previous value: -"Maximum wait time in milliseconds, 1000 to 60000 (default 30000) Not for operation update_journal_line."New value: +"Wait ms; default 30000. Only for operation update_fields, set_fmv_override."
    • changedInput schema / properties / transactionId / description
      Previous value: -"Portfolio transaction ID"New value: +"Portfolio transaction ID Only for operation update_fields, update_journal_line, set_fmv_override; required for each."
    • addedInput schema / properties / transactions
      Added value: +{
      +  "description": "valueQuote: signed TOTAL FMV, not unit price Only for operation create_manual; required for each.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "blockHeight": {
      +        "description": "Required for blockchain; omit for exchange/bank.",
      +        "pattern": "^\\d+$",
      +        "type": "string"
      +      },
      +      "details": {
      +        "allOf": [
      +          {
      +            "$ref": "#/definitions/RawWalletTransactionImportRequestDto__schema0"
      +          }
      +        ],
      +        "default": {},
      +        "description": "Source-specific raw JSON details"
      +      },
      +      "memo": {
      +        "description": "Memo.",
      +        "type": "string"
      +      },
      +      "source": {
      +        "description": "Source.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "tags": {
      +        "description": "Tags.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 50,
      +        "type": "array"
      +      },
      +      "timestamp": {
      +        "anyOf": [
      +          {
      +            "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))$",
      +            "type": "string"
      +          },
      +          {
      +            "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(?:Z))$",
      +            "type": "string"
      +          }
      +        ],
      +        "description": "ISO timestamp."
      +      },
      +      "transfers": {
      +        "description": "Transfers.",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "chainId": {
      +              "description": "Chain ID for the token identity",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "fromAddress": {
      +              "description": "Sender address",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "fromAddressLabel": {
      +              "description": "Sender label",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "quoteCurrency": {
      +              "description": "Quote currency",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "quoteSource": {
      +              "description": "Quote source",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "toAddress": {
      +              "description": "Recipient address",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "toAddressLabel": {
      +              "description": "Recipient label",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "tokenAddress": {
      +              "description": "Token contract or asset address",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": {
      +              "description": "Transfer direction/type",
      +              "enum": [
      +                "IN",
      +                "OUT",
      +                "GAS"
      +              ],
      +              "type": "string"
      +            },
      +            "value": {
      +              "description": "Transfer quantity as a decimal string",
      +              "pattern": "^-?\\d+(\\.\\d+)?$",
      +              "type": "string"
      +            },
      +            "valueQuote": {
      +              "description": "Transfer value in the quote currency",
      +              "pattern": "^-?\\d+(\\.\\d+)?$",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "chainId",
      +            "tokenAddress",
      +            "type",
      +            "value",
      +            "fromAddress",
      +            "toAddress"
      +          ],
      +          "type": "object"
      +        },
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "txHash": {
      +        "description": "Required blockchain hash; else generated.",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "timestamp",
      +      "transfers"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 500,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • removedInput schema / properties / waitForCompletion / anyOf
      Removed value: -[
      -  {
      -    "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",
      -    "type": "boolean"
      -  }
      -]
    • changedInput schema / properties / waitForCompletion / description
      Previous value: -"When true, poll queued request IDs and include terminal status/final state before returning Not for operation update_journal_line."New value: +"Wait for final state. Only for operation update_fields, set_fmv_override."
    • addedInput schema / properties / waitForCompletion / type
      Added value: +"boolean"
    • addedInput schema / properties / wallet
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Only for operation create_manual; required for each.",
      +  "properties": {
      +    "chainId": {
      +      "description": "Chain ID",
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "walletAddress": {
      +      "description": "Wallet address",
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "chainId",
      +    "walletAddress"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "workspaceRef",
      -  "portfolioRef",
      -  "operation",
      -  "transactionId"
      -]New value: +[
      +  "workspaceRef",
      +  "portfolioRef",
      +  "operation"
      +]
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "completed": {
      -        "$ref": "#/properties/completed"
      -      },
      -      "finalState": {
      -        "$ref": "#/properties/finalState"
      -      },
      -      "operation": {
      -        "const": "update_fields",
      -        "type": "string"
      -      },
      -      "primaryRequestId": {
      -        "$ref": "#/properties/primaryRequestId"
      -      },
      -      "requests": {
      -        "$ref": "#/properties/requests"
      -      },
      -      "results": {
      -        "$ref": "#/properties/results"
      -      },
      -      "statuses": {
      -        "$ref": "#/properties/statuses"
      -      },
      -      "transactionId": {
      -        "$ref": "#/properties/transactionId"
      -      }
      -    },
      -    "required": [
      -      "operation",
      -      "transactionId",
      -      "results"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "lineNumber": {
      -        "$ref": "#/properties/lineNumber"
      -      },
      -      "operation": {
      -        "const": "update_journal_line",
      -        "type": "string"
      -      },
      -      "results": {
      -        "$ref": "#/properties/results"
      -      },
      -      "transactionId": {
      -        "$ref": "#/properties/transactionId"
      -      }
      -    },
      -    "required": [
      -      "operation",
      -      "transactionId",
      -      "lineNumber",
      -      "results"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "completed": {
      -        "$ref": "#/properties/completed"
      -      },
      -      "finalState": {
      -        "$ref": "#/properties/finalState"
      -      },
      -      "operation": {
      -        "const": "set_fmv_override",
      -        "type": "string"
      -      },
      -      "requestId": {
      -        "$ref": "#/properties/requestId"
      -      },
      -      "requests": {
      -        "$ref": "#/properties/requests"
      -      },
      -      "status": {
      -        "$ref": "#/properties/status"
      -      },
      -      "statuses": {
      -        "$ref": "#/properties/statuses"
      -      },
      -      "transactionId": {
      -        "$ref": "#/properties/transactionId"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "requestId",
      -      "transactionId",
      -      "operation"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "$ref": "#/properties/error"
      -      },
      -      "operation": {
      -        "const": "set_fmv_override",
      -        "type": "string"
      -      },
      -      "status": {
      -        "$ref": "#/properties/status"
      -      },
      -      "success": {
      -        "$ref": "#/properties/success"
      -      },
      -      "transactionId": {
      -        "$ref": "#/properties/transactionId"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "success",
      -      "transactionId",
      -      "operation"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "created": {
      +        "$ref": "#/properties/created"
      +      },
      +      "failed": {
      +        "$ref": "#/properties/failed"
      +      },
      +      "operation": {
      +        "const": "create_manual",
      +        "type": "string"
      +      },
      +      "replaced": {
      +        "$ref": "#/properties/replaced"
      +      },
      +      "skipped": {
      +        "$ref": "#/properties/skipped"
      +      }
      +    },
      +    "required": [
      +      "created",
      +      "replaced",
      +      "skipped",
      +      "failed",
      +      "operation"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "completed": {
      +        "$ref": "#/properties/completed"
      +      },
      +      "finalState": {
      +        "$ref": "#/properties/finalState"
      +      },
      +      "operation": {
      +        "const": "update_fields",
      +        "type": "string"
      +      },
      +      "primaryRequestId": {
      +        "$ref": "#/properties/primaryRequestId"
      +      },
      +      "requests": {
      +        "$ref": "#/properties/requests"
      +      },
      +      "results": {
      +        "$ref": "#/properties/results"
      +      },
      +      "statuses": {
      +        "$ref": "#/properties/statuses"
      +      },
      +      "transactionId": {
      +        "$ref": "#/properties/transactionId"
      +      }
      +    },
      +    "required": [
      +      "operation",
      +      "transactionId",
      +      "results"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "lineNumber": {
      +        "$ref": "#/properties/lineNumber"
      +      },
      +      "operation": {
      +        "const": "update_journal_line",
      +        "type": "string"
      +      },
      +      "results": {
      +        "$ref": "#/properties/results"
      +      },
      +      "transactionId": {
      +        "$ref": "#/properties/transactionId"
      +      }
      +    },
      +    "required": [
      +      "operation",
      +      "transactionId",
      +      "lineNumber",
      +      "results"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "completed": {
      +        "$ref": "#/properties/completed"
      +      },
      +      "finalState": {
      +        "$ref": "#/properties/finalState"
      +      },
      +      "operation": {
      +        "const": "set_fmv_override",
      +        "type": "string"
      +      },
      +      "requestId": {
      +        "$ref": "#/properties/requestId"
      +      },
      +      "requests": {
      +        "$ref": "#/properties/requests"
      +      },
      +      "status": {
      +        "$ref": "#/properties/status"
      +      },
      +      "statuses": {
      +        "$ref": "#/properties/statuses"
      +      },
      +      "transactionId": {
      +        "$ref": "#/properties/transactionId"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "requestId",
      +      "transactionId",
      +      "operation"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "$ref": "#/properties/error"
      +      },
      +      "operation": {
      +        "const": "set_fmv_override",
      +        "type": "string"
      +      },
      +      "status": {
      +        "$ref": "#/properties/status"
      +      },
      +      "success": {
      +        "$ref": "#/properties/success"
      +      },
      +      "transactionId": {
      +        "$ref": "#/properties/transactionId"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "success",
      +      "transactionId",
      +      "operation"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedOutput schema / properties / created
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "txHash": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "txHash"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / failed
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "txHash": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "txHash",
      +      "error"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / operation / enum
      Previous value: -[
      -  "update_fields",
      -  "update_journal_line",
      -  "set_fmv_override"
      -]New value: +[
      +  "create_manual",
      +  "update_fields",
      +  "update_journal_line",
      +  "set_fmv_override"
      +]
    • addedOutput schema / properties / replaced
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "txHash": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "txHash"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / skipped
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "reason": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "txHash": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "txHash",
      +      "reason"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "operation",
      -  "transactionId"
      -]New value: +[
      +  "operation"
      +]
  3. Changed18 schema fields changed
    • removedInput schema / oneOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "memo": {
      -        "$ref": "#/properties/memo"
      -      },
      -      "operation": {
      -        "description": "Change memo, the full tag set, or the accounting operation type.",
      -        "enum": [
      -          "update_fields"
      -        ],
      -        "type": "string"
      -      },
      -      "operationType": {
      -        "$ref": "#/properties/operationType"
      -      },
      -      "pollIntervalMs": {
      -        "$ref": "#/properties/pollIntervalMs"
      -      },
      -      "portfolioRef": {
      -        "$ref": "#/properties/portfolioRef"
      -      },
      -      "subType": {
      -        "$ref": "#/properties/subType"
      -      },
      -      "tags": {
      -        "$ref": "#/properties/tags"
      -      },
      -      "timeoutMs": {
      -        "$ref": "#/properties/timeoutMs"
      -      },
      -      "transactionId": {
      -        "$ref": "#/properties/transactionId"
      -      },
      -      "waitForCompletion": {
      -        "$ref": "#/properties/waitForCompletion"
      -      },
      -      "workspaceRef": {
      -        "$ref": "#/properties/workspaceRef"
      -      }
      -    },
      -    "required": [
      -      "workspaceRef",
      -      "portfolioRef",
      -      "operation",
      -      "transactionId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accountNumber": {
      -        "$ref": "#/properties/accountNumber"
      -      },
      -      "counterpartyName": {
      -        "$ref": "#/properties/counterpartyName"
      -      },
      -      "lineNumber": {
      -        "$ref": "#/properties/lineNumber"
      -      },
      -      "operation": {
      -        "description": "Change the ledger account, counterparty, or reporting-group assignments on one transaction's debit or credit line.",
      -        "enum": [
      -          "update_journal_line"
      -        ],
      -        "type": "string"
      -      },
      -      "portfolioRef": {
      -        "$ref": "#/properties/portfolioRef"
      -      },
      -      "responsibilityCenterAssignments": {
      -        "$ref": "#/properties/responsibilityCenterAssignments"
      -      },
      -      "transactionId": {
      -        "$ref": "#/properties/transactionId"
      -      },
      -      "workspaceRef": {
      -        "$ref": "#/properties/workspaceRef"
      -      }
      -    },
      -    "required": [
      -      "workspaceRef",
      -      "portfolioRef",
      -      "operation",
      -      "transactionId",
      -      "lineNumber"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "assetId": {
      -        "$ref": "#/properties/assetId"
      -      },
      -      "newValueQuote": {
      -        "$ref": "#/properties/newValueQuote"
      -      },
      -      "operation": {
      -        "description": "Set a corrected fair market value per unit for one asset on the transaction and recompute dependent cost-basis records.",
      -        "enum": [
      -          "set_fmv_override"
      -        ],
      -        "type": "string"
      -      },
      -      "pollIntervalMs": {
      -        "$ref": "#/properties/pollIntervalMs"
      -      },
      -      "portfolioRef": {
      -        "$ref": "#/properties/portfolioRef"
      -      },
      -      "quoteCurrency": {
      -        "$ref": "#/properties/quoteCurrency"
      -      },
      -      "quoteSource": {
      -        "$ref": "#/properties/quoteSource"
      -      },
      -      "reason": {
      -        "$ref": "#/properties/reason"
      -      },
      -      "timeoutMs": {
      -        "$ref": "#/properties/timeoutMs"
      -      },
      -      "transactionId": {
      -        "$ref": "#/properties/transactionId"
      -      },
      -      "waitForCompletion": {
      -        "$ref": "#/properties/waitForCompletion"
      -      },
      -      "workspaceRef": {
      -        "$ref": "#/properties/workspaceRef"
      -      }
      -    },
      -    "required": [
      -      "workspaceRef",
      -      "portfolioRef",
      -      "operation",
      -      "transactionId",
      -      "assetId",
      -      "newValueQuote"
      -    ],
      -    "type": "object"
      -  }
      -]
    • changedInput schema / properties / accountNumber / description
      Previous value: -"Chart-of-accounts number to assign (from list_journal_line_assignment_options, type: ledger_account)"New value: +"Chart-of-accounts number to assign (from list_journal_line_assignment_options, type: ledger_account) Only for operation update_journal_line."
    • changedInput schema / properties / assetId / description
      Previous value: -"Asset ID to override (e.g. eth_1, as returned by the read tools)"New value: +"Asset ID to override (e.g. eth_1, as returned by the read tools) Only for operation set_fmv_override; required for each."
    • changedInput schema / properties / counterpartyName / description
      Previous value: -"Counterparty name to assign; pass null to unset"New value: +"Counterparty name to assign; pass null to unset Only for operation update_journal_line."
    • changedInput schema / properties / lineNumber / description
      Previous value: -"Journal entry line number (1-based)"New value: +"Journal entry line number (1-based) Only for operation update_journal_line; required for each."
    • changedInput schema / properties / memo / description
      Previous value: -"New memo; pass null to clear it"New value: +"New memo; pass null to clear it Only for operation update_fields."
    • changedInput schema / properties / newValueQuote / description
      Previous value: -"Exact per-unit decimal string in base currency, e.g. \"0\". Do not use price."New value: +"Exact per-unit decimal string in base currency, e.g. \"0\". Do not use price. Only for operation set_fmv_override; required for each."
    • changedInput schema / properties / operation / description
      Previous value: -"Change memo, the full tag set, or the accounting operation type."New value: +"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."
    • changedInput schema / properties / operationType / description
      Previous value: -"New accounting operation type"New value: +"New accounting operation type Only for operation update_fields."
    • changedInput schema / properties / pollIntervalMs / description
      Previous value: -"Polling interval in milliseconds, 100 to 5000 (default 500)"New value: +"Polling interval in milliseconds, 100 to 5000 (default 500) Not for operation update_journal_line."
    • changedInput schema / properties / quoteCurrency / description
      Previous value: -"Optional quote currency (defaults to base currency)"New value: +"Optional quote currency (defaults to base currency) Only for operation set_fmv_override."
    • changedInput schema / properties / quoteSource / description
      Previous value: -"Optional source/justification for the price"New value: +"Optional source/justification for the price Only for operation set_fmv_override."
    • changedInput schema / properties / reason / description
      Previous value: -"Immutable root reason whose nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references"New value: +"Immutable root reason whose nonempty bytes are preserved exactly; use ptx:<uuid> for transaction references Only for operation set_fmv_override."
    • changedInput schema / properties / responsibilityCenterAssignments / description
      Previous value: -"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."New value: +"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."
    • changedInput schema / properties / subType / description
      Previous value: -"New operation sub-type (requires operationType)"New value: +"New operation sub-type (requires operationType) Only for operation update_fields."
    • changedInput schema / properties / tags / description
      Previous value: -"Replace the full set of transaction tags"New value: +"Replace the full set of transaction tags Only for operation update_fields."
    • changedInput schema / properties / timeoutMs / description
      Previous value: -"Maximum wait time in milliseconds, 1000 to 60000 (default 30000)"New value: +"Maximum wait time in milliseconds, 1000 to 60000 (default 30000) Not for operation update_journal_line."
    • changedInput schema / properties / waitForCompletion / description
      Previous value: -"When true, poll queued request IDs and include terminal status/final state before returning"New value: +"When true, poll queued request IDs and include terminal status/final state before returning Not for operation update_journal_line."
  4. Added

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: duplicate hashes are refused, accounting is asynchronous, and async completion is tracked via requestIds or waitForCompletion. This directly explains the idempotency and mutation behavior an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the dual purpose and operation list, then gives prerequisites and async guidance in compact sentences. Slightly dense but no wasted phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 22 parameters, nested transfer objects, and an output schema, the description covers the distinct operations, prerequisites, and async behavior. It could say more about operation-specific validation or errors, but the core is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and per-parameter descriptions already state which operation each field applies to. The description adds high-level semantics (signed movements, total FMV vs unit price) but doesn't go beyond what the schema already documents. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (create/change) with resources across four named operations, listing exactly what each mutates (manual source transactions, memo/tags/type, journal lines, unit FMV). An agent can distinguish this from siblings like merge_transactions or reprocess_transaction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to read line numbers/list_journal_line_assignment_options first and to track requestIds or waitForCompletion for async fields/FMV edits. Clear context, though it doesn't name an alternative for when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources