Skip to main content
Glama

ynab_update_transaction

Idempotent

Update fields on an existing YNAB transaction, including amount, date, payee, category, memo, cleared status, approval, and split lines, with a preview option before saving.

Instructions

Update fields on an existing YNAB transaction.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transaction_id (string, required): Transaction UUID to update.

  • amount_decimal (number, preferred): New amount in decimal currency units.

  • amount_milliunits (int, alternative): Explicit raw YNAB milliunits.

  • amount (int, deprecated): Backward-compatible alias for amount_milliunits.

  • date (string, optional): New date YYYY-MM-DD.

  • payee_name / payee_id (string, optional): New payee.

  • category_id (string, optional): New category UUID.

  • memo (string, optional): New memo.

  • cleared (string, optional): "cleared", "uncleared", or "reconciled".

  • approved (boolean, optional): Approval status.

  • subtransactions (array, optional): Convert a non-split transaction into a split. Supply the parent amount and split lines using amount_decimal, amount_milliunits, or deprecated amount; split amounts must sum to the parent and category_id must be omitted on the parent. YNAB does not support replacing lines on an existing split.

  • dry_run (boolean, optional): Preview without saving.

Returns: the updated transaction, including split lines and explicit amount_milliunits.

Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

Input Schema

NameRequiredDescriptionDefault
dateNo
memoNo
amountNoDeprecated legacy alias for amount_milliunits. Use amount_decimal for currency input or amount_milliunits for raw YNAB values.
clearedNo
dry_runNo
approvedNo
payee_idNo
budget_idNo
account_idNo
flag_colorNo
payee_nameNo
category_idNo
amount_decimalNoPreferred: amount in decimal currency units (for example, -12.34). Rounded exactly to the nearest YNAB milliunit.
transaction_idYes
subtransactionsNo
amount_milliunitsNoRaw YNAB milliunits. Use only when the value is already converted.
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request. Omit, or pass null or an empty string, to preview.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.32.0
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "ynab_update_transaction",
      -        "type": "string"
      -      },
      -      "dry_run": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "request": {
      -        "additionalProperties": {},
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "dry_run",
      -      "action",
      -      "request"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "transaction": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "account_balance": {
      -            "type": "number"
      -          },
      -          "account_cleared_balance": {
      -            "type": "number"
      -          },
      -          "account_id": {
      -            "type": "string"
      -          },
      -          "account_name": {
      -            "type": "string"
      -          },
      -          "amount": {
      -            "description": "Amount in decimal currency units",
      -            "type": "number"
      -          },
      -          "amount_currency": {
      -            "type": "number"
      -          },
      -          "amount_formatted": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "amount_milliunits": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "approved": {
      -            "type": "boolean"
      -          },
      -          "category_id": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "category_name": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "cleared": {
      -            "type": "string"
      -          },
      -          "date": {
      -            "type": "string"
      -          },
      -          "debt_transaction_type": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "deleted": {
      -            "type": "boolean"
      -          },
      -          "flag_color": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "flag_name": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "import_id": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "import_payee_name": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "import_payee_name_original": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "matched_transaction_id": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "memo": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "parent_transaction_id": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "payee_id": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "payee_name": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "scheduled_transaction_id": {
      -            "type": "string"
      -          },
      -          "subtransactions": {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "amount": {
      -                  "description": "Amount in decimal currency units",
      -                  "type": "number"
      -                },
      -                "amount_currency": {
      -                  "type": "number"
      -                },
      -                "amount_formatted": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "amount_milliunits": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                },
      -                "category_id": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "category_name": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "deleted": {
      -                  "type": "boolean"
      -                },
      -                "id": {
      -                  "type": "string"
      -                },
      -                "memo": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "payee_id": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "payee_name": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "scheduled_transaction_id": {
      -                  "type": "string"
      -                },
      -                "transaction_id": {
      -                  "type": "string"
      -                },
      -                "transfer_account_id": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "transfer_transaction_id": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "id",
      -                "transaction_id",
      -                "amount",
      -                "deleted"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "transaction_id": {
      -            "type": "string"
      -          },
      -          "transfer_account_id": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "transfer_transaction_id": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "type": {
      -            "enum": [
      -              "transaction",
      -              "subtransaction"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "amount",
      -          "deleted",
      -          "date",
      -          "account_id",
      -          "cleared",
      -          "approved"
      -        ],
      -        "type": "object"
      -      },
      -      "updated_balance": {
      -        "type": "number"
      -      },
      -      "updated_cleared_balance": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "transaction"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "ynab_update_transaction",
      +        "type": "string"
      +      },
      +      "confirmation_expires_at": {
      +        "description": "Preview only: when confirmation_token expires (ISO 8601).",
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "confirmation_token": {
      +        "description": "Preview only: single-use token that executes this exact request when passed back as confirmation_token.",
      +        "type": "string"
      +      },
      +      "dry_run": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "request": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "warnings": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "count": {
      +              "type": "number"
      +            },
      +            "message": {
      +              "type": "string"
      +            },
      +            "sample_ids": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "code",
      +            "count",
      +            "message"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "dry_run",
      +      "action",
      +      "request"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "confirmation_expires_at": {
      +        "description": "Preview only: when confirmation_token expires (ISO 8601).",
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "confirmation_token": {
      +        "description": "Preview only: single-use token that executes this exact request when passed back as confirmation_token.",
      +        "type": "string"
      +      },
      +      "transaction": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "account_balance": {
      +            "type": "number"
      +          },
      +          "account_cleared_balance": {
      +            "type": "number"
      +          },
      +          "account_id": {
      +            "type": "string"
      +          },
      +          "account_name": {
      +            "type": "string"
      +          },
      +          "amount": {
      +            "description": "Amount in decimal currency units",
      +            "type": "number"
      +          },
      +          "amount_currency": {
      +            "type": "number"
      +          },
      +          "amount_formatted": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "amount_milliunits": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "approved": {
      +            "type": "boolean"
      +          },
      +          "category_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "category_name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "cleared": {
      +            "type": "string"
      +          },
      +          "date": {
      +            "type": "string"
      +          },
      +          "debt_transaction_type": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "deleted": {
      +            "type": "boolean"
      +          },
      +          "flag_color": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "flag_name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "import_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "import_payee_name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "import_payee_name_original": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "matched_transaction_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "memo": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "parent_transaction_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "payee_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "payee_name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "scheduled_transaction_id": {
      +            "type": "string"
      +          },
      +          "subtransactions": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "amount": {
      +                  "description": "Amount in decimal currency units",
      +                  "type": "number"
      +                },
      +                "amount_currency": {
      +                  "type": "number"
      +                },
      +                "amount_formatted": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "amount_milliunits": {
      +                  "maximum": 9007199254740991,
      +                  "minimum": -9007199254740991,
      +                  "type": "integer"
      +                },
      +                "category_id": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "category_name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "deleted": {
      +                  "type": "boolean"
      +                },
      +                "id": {
      +                  "type": "string"
      +                },
      +                "memo": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "payee_id": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "payee_name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "scheduled_transaction_id": {
      +                  "type": "string"
      +                },
      +                "transaction_id": {
      +                  "type": "string"
      +                },
      +                "transfer_account_id": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "transfer_transaction_id": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "transaction_id",
      +                "amount",
      +                "deleted"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "transaction_id": {
      +            "type": "string"
      +          },
      +          "transfer_account_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "transfer_transaction_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": {
      +            "enum": [
      +              "transaction",
      +              "subtransaction"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "amount",
      +          "deleted",
      +          "date",
      +          "account_id",
      +          "cleared",
      +          "approved"
      +        ],
      +        "type": "object"
      +      },
      +      "updated_balance": {
      +        "type": "number"
      +      },
      +      "updated_cleared_balance": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "transaction"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed5 schema fields changedv0.31.0
    • addedInput schema / properties / confirmation_token / anyOf
      Added value: +[
      +  {
      +    "minLength": 16,
      +    "type": "string"
      +  },
      +  {
      +    "const": ""
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / confirmation_token / description
      Previous value: -"Short-lived, single-use token returned by the immediately preceding preview of this exact validated request."New value: +"Short-lived, single-use token returned by the immediately preceding preview of this exact validated request. Omit, or pass null or an empty string, to preview."
    • removedInput schema / properties / confirmation_token / minLength
      Removed value: -16
    • removedInput schema / properties / confirmation_token / type
      Removed value: -"string"
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "ynab_update_transaction",
      -        "type": "string"
      -      },
      -      "dry_run": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "request": {
      -        "additionalProperties": {},
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "dry_run",
      -      "action",
      -      "request"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "transaction": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "account_balance": {
      -            "type": "number"
      -          },
      -          "account_cleared_balance": {
      -            "type": "number"
      -          },
      -          "account_id": {
      -            "description": "Account ID",
      -            "type": "string"
      -          },
      -          "account_name": {
      -            "description": "Account name",
      -            "type": "string"
      -          },
      -          "amount": {
      -            "description": "Transaction amount in dollars",
      -            "type": "number"
      -          },
      -          "approved": {
      -            "description": "Approved flag",
      -            "type": "boolean"
      -          },
      -          "category_id": {
      -            "description": "Category ID",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "category_name": {
      -            "description": "Category name",
      -            "type": "string"
      -          },
      -          "cleared": {
      -            "description": "Cleared status",
      -            "type": "string"
      -          },
      -          "date": {
      -            "description": "Transaction date",
      -            "type": "string"
      -          },
      -          "deleted": {
      -            "description": "Deleted flag",
      -            "type": "boolean"
      -          },
      -          "flag_color": {
      -            "description": "Flag color",
      -            "type": "string"
      -          },
      -          "id": {
      -            "description": "Transaction ID",
      -            "type": "string"
      -          },
      -          "import_id": {
      -            "description": "Import ID",
      -            "type": "string"
      -          },
      -          "matched_transaction_id": {
      -            "description": "Matched transaction ID",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "memo": {
      -            "description": "Transaction memo",
      -            "type": "string"
      -          },
      -          "payee_id": {
      -            "description": "Payee ID",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "payee_name": {
      -            "description": "Payee name",
      -            "type": "string"
      -          },
      -          "subtransactions": {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "amount": {
      -                  "type": "number"
      -                },
      -                "category_id": {
      -                  "type": "string"
      -                },
      -                "category_name": {
      -                  "type": "string"
      -                },
      -                "deleted": {
      -                  "type": "boolean"
      -                },
      -                "id": {
      -                  "type": "string"
      -                },
      -                "memo": {
      -                  "type": "string"
      -                },
      -                "payee_id": {
      -                  "type": "string"
      -                },
      -                "payee_name": {
      -                  "type": "string"
      -                },
      -                "transaction_id": {
      -                  "type": "string"
      -                },
      -                "transfer_account_id": {
      -                  "type": "string"
      -                },
      -                "transfer_transaction_id": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "id",
      -                "transaction_id",
      -                "amount",
      -                "deleted"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "transfer_account_id": {
      -            "description": "Transfer account ID",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "transfer_transaction_id": {
      -            "description": "Transfer transaction ID",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "date",
      -          "amount",
      -          "cleared",
      -          "approved",
      -          "account_id",
      -          "deleted"
      -        ],
      -        "type": "object"
      -      },
      -      "updated_balance": {
      -        "type": "number"
      -      },
      -      "updated_cleared_balance": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "transaction",
      -      "updated_balance",
      -      "updated_cleared_balance"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "ynab_update_transaction",
      +        "type": "string"
      +      },
      +      "dry_run": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "request": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "dry_run",
      +      "action",
      +      "request"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "transaction": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "account_balance": {
      +            "type": "number"
      +          },
      +          "account_cleared_balance": {
      +            "type": "number"
      +          },
      +          "account_id": {
      +            "type": "string"
      +          },
      +          "account_name": {
      +            "type": "string"
      +          },
      +          "amount": {
      +            "description": "Amount in decimal currency units",
      +            "type": "number"
      +          },
      +          "amount_currency": {
      +            "type": "number"
      +          },
      +          "amount_formatted": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "amount_milliunits": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "approved": {
      +            "type": "boolean"
      +          },
      +          "category_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "category_name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "cleared": {
      +            "type": "string"
      +          },
      +          "date": {
      +            "type": "string"
      +          },
      +          "debt_transaction_type": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "deleted": {
      +            "type": "boolean"
      +          },
      +          "flag_color": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "flag_name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "import_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "import_payee_name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "import_payee_name_original": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "matched_transaction_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "memo": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "parent_transaction_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "payee_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "payee_name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "scheduled_transaction_id": {
      +            "type": "string"
      +          },
      +          "subtransactions": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "amount": {
      +                  "description": "Amount in decimal currency units",
      +                  "type": "number"
      +                },
      +                "amount_currency": {
      +                  "type": "number"
      +                },
      +                "amount_formatted": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "amount_milliunits": {
      +                  "maximum": 9007199254740991,
      +                  "minimum": -9007199254740991,
      +                  "type": "integer"
      +                },
      +                "category_id": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "category_name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "deleted": {
      +                  "type": "boolean"
      +                },
      +                "id": {
      +                  "type": "string"
      +                },
      +                "memo": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "payee_id": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "payee_name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "scheduled_transaction_id": {
      +                  "type": "string"
      +                },
      +                "transaction_id": {
      +                  "type": "string"
      +                },
      +                "transfer_account_id": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "transfer_transaction_id": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "transaction_id",
      +                "amount",
      +                "deleted"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "transaction_id": {
      +            "type": "string"
      +          },
      +          "transfer_account_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "transfer_transaction_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": {
      +            "enum": [
      +              "transaction",
      +              "subtransaction"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "amount",
      +          "deleted",
      +          "date",
      +          "account_id",
      +          "cleared",
      +          "approved"
      +        ],
      +        "type": "object"
      +      },
      +      "updated_balance": {
      +        "type": "number"
      +      },
      +      "updated_cleared_balance": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "transaction"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed2 schema fields changedv0.29.1
    • addedInput schema / properties / subtransactions
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "amount": {
      +        "description": "Deprecated legacy alias for amount_milliunits on this split line.",
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "amount_decimal": {
      +        "description": "Preferred: amount in decimal currency units (for example, -12.34). Rounded exactly to the nearest YNAB milliunit.",
      +        "type": "number"
      +      },
      +      "amount_milliunits": {
      +        "description": "Raw YNAB milliunits. Use only when the value is already converted.",
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "category_id": {
      +        "type": "string"
      +      },
      +      "memo": {
      +        "type": "string"
      +      },
      +      "payee_id": {
      +        "type": "string"
      +      },
      +      "payee_name": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "ynab_update_transaction",
      -        "type": "string"
      -      },
      -      "dry_run": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "request": {
      -        "additionalProperties": {},
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "dry_run",
      -      "action",
      -      "request"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "transaction": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "account_balance": {
      -            "type": "number"
      -          },
      -          "account_cleared_balance": {
      -            "type": "number"
      -          },
      -          "account_id": {
      -            "description": "Account ID",
      -            "type": "string"
      -          },
      -          "account_name": {
      -            "description": "Account name",
      -            "type": "string"
      -          },
      -          "amount": {
      -            "description": "Transaction amount in dollars",
      -            "type": "number"
      -          },
      -          "approved": {
      -            "description": "Approved flag",
      -            "type": "boolean"
      -          },
      -          "category_id": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "Category ID"
      -          },
      -          "category_name": {
      -            "description": "Category name",
      -            "type": "string"
      -          },
      -          "cleared": {
      -            "description": "Cleared status",
      -            "type": "string"
      -          },
      -          "date": {
      -            "description": "Transaction date",
      -            "type": "string"
      -          },
      -          "deleted": {
      -            "description": "Deleted flag",
      -            "type": "boolean"
      -          },
      -          "flag_color": {
      -            "description": "Flag color",
      -            "type": "string"
      -          },
      -          "id": {
      -            "description": "Transaction ID",
      -            "type": "string"
      -          },
      -          "import_id": {
      -            "description": "Import ID",
      -            "type": "string"
      -          },
      -          "matched_transaction_id": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "Matched transaction ID"
      -          },
      -          "memo": {
      -            "description": "Transaction memo",
      -            "type": "string"
      -          },
      -          "payee_id": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "Payee ID"
      -          },
      -          "payee_name": {
      -            "description": "Payee name",
      -            "type": "string"
      -          },
      -          "subtransactions": {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "amount": {
      -                  "type": "number"
      -                },
      -                "category_id": {
      -                  "type": "string"
      -                },
      -                "category_name": {
      -                  "type": "string"
      -                },
      -                "deleted": {
      -                  "type": "boolean"
      -                },
      -                "id": {
      -                  "type": "string"
      -                },
      -                "memo": {
      -                  "type": "string"
      -                },
      -                "payee_id": {
      -                  "type": "string"
      -                },
      -                "payee_name": {
      -                  "type": "string"
      -                },
      -                "transaction_id": {
      -                  "type": "string"
      -                },
      -                "transfer_account_id": {
      -                  "type": "string"
      -                },
      -                "transfer_transaction_id": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "id",
      -                "transaction_id",
      -                "amount",
      -                "deleted"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "transfer_account_id": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "Transfer account ID"
      -          },
      -          "transfer_transaction_id": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ],
      -            "description": "Transfer transaction ID"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "date",
      -          "amount",
      -          "cleared",
      -          "approved",
      -          "account_id",
      -          "deleted"
      -        ],
      -        "type": "object"
      -      },
      -      "updated_balance": {
      -        "type": "number"
      -      },
      -      "updated_cleared_balance": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "transaction",
      -      "updated_balance",
      -      "updated_cleared_balance"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "ynab_update_transaction",
      +        "type": "string"
      +      },
      +      "dry_run": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "request": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "dry_run",
      +      "action",
      +      "request"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "transaction": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "account_balance": {
      +            "type": "number"
      +          },
      +          "account_cleared_balance": {
      +            "type": "number"
      +          },
      +          "account_id": {
      +            "description": "Account ID",
      +            "type": "string"
      +          },
      +          "account_name": {
      +            "description": "Account name",
      +            "type": "string"
      +          },
      +          "amount": {
      +            "description": "Transaction amount in dollars",
      +            "type": "number"
      +          },
      +          "approved": {
      +            "description": "Approved flag",
      +            "type": "boolean"
      +          },
      +          "category_id": {
      +            "description": "Category ID",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "category_name": {
      +            "description": "Category name",
      +            "type": "string"
      +          },
      +          "cleared": {
      +            "description": "Cleared status",
      +            "type": "string"
      +          },
      +          "date": {
      +            "description": "Transaction date",
      +            "type": "string"
      +          },
      +          "deleted": {
      +            "description": "Deleted flag",
      +            "type": "boolean"
      +          },
      +          "flag_color": {
      +            "description": "Flag color",
      +            "type": "string"
      +          },
      +          "id": {
      +            "description": "Transaction ID",
      +            "type": "string"
      +          },
      +          "import_id": {
      +            "description": "Import ID",
      +            "type": "string"
      +          },
      +          "matched_transaction_id": {
      +            "description": "Matched transaction ID",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "memo": {
      +            "description": "Transaction memo",
      +            "type": "string"
      +          },
      +          "payee_id": {
      +            "description": "Payee ID",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "payee_name": {
      +            "description": "Payee name",
      +            "type": "string"
      +          },
      +          "subtransactions": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "amount": {
      +                  "type": "number"
      +                },
      +                "category_id": {
      +                  "type": "string"
      +                },
      +                "category_name": {
      +                  "type": "string"
      +                },
      +                "deleted": {
      +                  "type": "boolean"
      +                },
      +                "id": {
      +                  "type": "string"
      +                },
      +                "memo": {
      +                  "type": "string"
      +                },
      +                "payee_id": {
      +                  "type": "string"
      +                },
      +                "payee_name": {
      +                  "type": "string"
      +                },
      +                "transaction_id": {
      +                  "type": "string"
      +                },
      +                "transfer_account_id": {
      +                  "type": "string"
      +                },
      +                "transfer_transaction_id": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "transaction_id",
      +                "amount",
      +                "deleted"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "transfer_account_id": {
      +            "description": "Transfer account ID",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "transfer_transaction_id": {
      +            "description": "Transfer transaction ID",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "date",
      +          "amount",
      +          "cleared",
      +          "approved",
      +          "account_id",
      +          "deleted"
      +        ],
      +        "type": "object"
      +      },
      +      "updated_balance": {
      +        "type": "number"
      +      },
      +      "updated_cleared_balance": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "transaction",
      +      "updated_balance",
      +      "updated_cleared_balance"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed4 schema fields changedv0.27.1
    • addedInput schema / properties / amount / description
      Added value: +"Deprecated legacy alias for amount_milliunits. Use amount_decimal for currency input or amount_milliunits for raw YNAB values."
    • addedInput schema / properties / amount_decimal
      Added value: +{
      +  "description": "Preferred: amount in decimal currency units (for example, -12.34). Rounded exactly to the nearest YNAB milliunit.",
      +  "type": "number"
      +}
    • addedInput schema / properties / amount_milliunits
      Added value: +{
      +  "description": "Raw YNAB milliunits. Use only when the value is already converted.",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • addedInput schema / properties / confirmation_token
      Added value: +{
      +  "description": "Short-lived, single-use token returned by the immediately preceding preview of this exact validated request.",
      +  "minLength": 16,
      +  "type": "string"
      +}
  5. Addedv0.26.9

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, idempotent=true, destructive=false), the description discloses the full two-phase write-safety protocol: an unconfirmed call previews, returns a short-lived confirmation_token, and must be replayed identically. It also documents real YNAB constraints (split lines must sum to the parent, category_id must be omitted on the parent, existing splits cannot have their lines replaced), which the annotations cannot convey.

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?

The one-line purpose is front-loaded, and the Args list is scannable and consistent. There is some duplication with schema descriptions (amount_decimal, amount_milliunits restated nearly verbatim) and the Returns line is redundant given the output schema, but nothing is truly wasteful.

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?

For a 17-parameter mutation tool with nested split semantics, the description covers the hard parts: the confirmation handshake, split conversion rules, and amount-precedence. It is nearly complete, with the omission of account_id and flag_color the only material hole, and the output schema relieving it of return-value detail.

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

Parameters4/5

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

With only 24% schema description coverage across 17 parameters, the Args block carries most of the semantic load: it ranks amount_decimal as preferred over amount_milliunits and the deprecated amount alias, states the default-budget behavior, gives the date format and the cleared enum values, and explains the split-amount summing rule. The gap is that account_id and flag_color appear in the schema but are absent from the description entirely.

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

Purpose4/5

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

The opening sentence gives a specific verb and resource ("Update fields on an existing YNAB transaction"), which is clearly distinct from create/delete siblings. However, it never names ynab_update_transactions (the bulk variant) as the alternative, so the singular/plural distinction must be inferred from the sibling list.

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

Usage Guidelines3/5

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

Usage guidance is strong on mechanics ("call without confirmation_token to preview", dry_run preview) but says nothing about when to prefer this over ynab_update_transactions or when a split should be created via ynab_create_receipt_split_transaction instead. The agent is left to infer the single-vs-batch routing.

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