Skip to main content
Glama

ynab_get_transaction

Read-onlyIdempotent

Retrieve complete details for a single YNAB transaction by ID, including amount, memo, payee, category, and subtransactions. Use it to inspect or verify one transaction in a budget.

Instructions

Get full details for a single transaction by ID.

Args:

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

  • transaction_id (string, required): Transaction UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: transaction (id, date, amount, memo, cleared, approved, account_id, payee_name, category_name, subtransactions), cached, cache_info

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "Transaction not found" → invalid transaction_id

Input Schema

NameRequiredDescriptionDefault
budget_idNo
transaction_idYes
response_formatNomarkdown

Output Schema

NameRequiredDescriptionDefault
cachedNoIndicates if data was served from cache
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")
transactionYesTransaction details

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed36 schema fields changedv0.31.0
    • removedOutput schema / properties / transaction / properties / account_id / description
      Removed value: -"Account ID"
    • removedOutput schema / properties / transaction / properties / account_name / description
      Removed value: -"Account name"
    • changedOutput schema / properties / transaction / properties / amount / description
      Previous value: -"Transaction amount in dollars"New value: +"Amount in decimal currency units"
    • addedOutput schema / properties / transaction / properties / amount_currency
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / transaction / properties / amount_formatted
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / transaction / properties / amount_milliunits
      Added value: +{
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • removedOutput schema / properties / transaction / properties / approved / description
      Removed value: -"Approved flag"
    • removedOutput schema / properties / transaction / properties / category_id / description
      Removed value: -"Category ID"
    • removedOutput schema / properties / transaction / properties / category_name / description
      Removed value: -"Category name"
    • changedOutput schema / properties / transaction / properties / category_name / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / transaction / properties / cleared / description
      Removed value: -"Cleared status"
    • removedOutput schema / properties / transaction / properties / date / description
      Removed value: -"Transaction date"
    • addedOutput schema / properties / transaction / properties / debt_transaction_type
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / transaction / properties / deleted / description
      Removed value: -"Deleted flag"
    • removedOutput schema / properties / transaction / properties / flag_color / description
      Removed value: -"Flag color"
    • changedOutput schema / properties / transaction / properties / flag_color / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / transaction / properties / flag_name
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / transaction / properties / id / description
      Removed value: -"Transaction ID"
    • removedOutput schema / properties / transaction / properties / import_id / description
      Removed value: -"Import ID"
    • changedOutput schema / properties / transaction / properties / import_id / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / transaction / properties / import_payee_name
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / transaction / properties / import_payee_name_original
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / transaction / properties / matched_transaction_id / description
      Removed value: -"Matched transaction ID"
    • removedOutput schema / properties / transaction / properties / memo / description
      Removed value: -"Transaction memo"
    • changedOutput schema / properties / transaction / properties / memo / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / transaction / properties / parent_transaction_id
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / transaction / properties / payee_id / description
      Removed value: -"Payee ID"
    • removedOutput schema / properties / transaction / properties / payee_name / description
      Removed value: -"Payee name"
    • changedOutput schema / properties / transaction / properties / payee_name / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / transaction / properties / scheduled_transaction_id
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / transaction / properties / subtransactions
      Added value: +{
      +  "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": [
      +      "amount"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / transaction / properties / transaction_id
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / transaction / properties / transfer_account_id / description
      Removed value: -"Transfer account ID"
    • removedOutput schema / properties / transaction / properties / transfer_transaction_id / description
      Removed value: -"Transfer transaction ID"
    • addedOutput schema / properties / transaction / properties / type
      Added value: +{
      +  "enum": [
      +    "transaction",
      +    "subtransaction"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / transaction / required
      Previous value: -[
      -  "id",
      -  "date",
      -  "amount",
      -  "cleared",
      -  "approved",
      -  "account_id",
      -  "deleted"
      -]New value: +[
      +  "id",
      +  "amount",
      +  "deleted",
      +  "date",
      +  "account_id",
      +  "cleared",
      +  "approved"
      +]
  2. Changed10 schema fields changedv0.29.1
    • removedOutput schema / properties / transaction / properties / category_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / transaction / properties / category_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / transaction / properties / matched_transaction_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / transaction / properties / matched_transaction_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / transaction / properties / payee_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / transaction / properties / payee_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / transaction / properties / transfer_account_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / transaction / properties / transfer_account_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / transaction / properties / transfer_transaction_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / transaction / properties / transfer_transaction_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  3. Addedv0.26.9

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent and non-destructive semantics, and the description adds real context beyond them: the cache flags ('cached, cache_info') in the return, plus two named error conditions with remediation. It does not explain caching lifetime or rate-limit behavior, keeping it short of a 5.

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-loaded one-line purpose followed by compact Args/Returns/Errors blocks, so an agent can scan it quickly. The Args block restates names and types already in the schema, but with 0% schema coverage that repetition earns its place.

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 an output schema exists, the Returns line is supplementary rather than essential, and the Errors section plus the default-budget fallback cover the main failure modes. What remains unstated is whether a missing transaction vs a missing budget requires different recovery paths beyond the two listed errors.

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?

Schema description coverage is 0%, so the description carries the full burden and largely succeeds: it labels budget_id optional with the meaningful 'omit to use the default budget' behavior, marks transaction_id required, and gives response_format's enum and default. 'Transaction UUID' is the only thin spot.

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?

States a specific verb and resource with scope ('full details for a single transaction by ID'), which implicitly separates it from list_transactions and the update/delete siblings. It never names a sibling explicitly, so the differentiation is inferred rather than stated.

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 is implied by the 'single transaction by ID' framing and reinforced by the error routing ('No default budget set' → run ynab_set_default_budget first), which is genuinely actionable. There is still no explicit guidance on when to use this versus ynab_list_transactions or ynab_compare_transactions.

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