Skip to main content
Glama
YNAB MCP Server

YNAB MCP Server

by calebl

List Scheduled Transactions

ynab_list_scheduled_transactions
Read-only

Lists the scheduled transactions set up in YNAB. To find recurring charges in transaction history, including ones that are not scheduled, use ynab_detect_recurring. For a projected balance, use ynab_balance_forecast.

Instructions

Lists the scheduled transactions set up in YNAB. To find recurring charges in transaction history, including ones that are not scheduled, use ynab_detect_recurring. For a projected balance, use ynab_balance_forecast.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "ynab_list_scheduled_transactions"
  }
}

Input Schema

NameRequiredDescriptionDefault
planIdNoThe plan ID (optional, defaults to YNAB_PLAN_ID; budgetId is a deprecated alias)
budgetIdNoDeprecated alias of planId (still accepted)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.3.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / budgetId / anyOf
      Added value: +[
      +  {
      +    "description": "Deprecated alias of planId (still accepted)",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / budgetId / description
      Previous value: -"The ID of the budget (optional, defaults to YNAB_BUDGET_ID environment variable)"New value: +"Deprecated alias of planId (still accepted)"
    • removedInput schema / properties / budgetId / type
      Removed value: -"string"
    • addedInput schema / properties / planId
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "The plan ID (optional, defaults to YNAB_PLAN_ID; budgetId is a deprecated alias)",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The plan ID (optional, defaults to YNAB_PLAN_ID; budgetId is a deprecated alias)"
      +}
  2. Addedv1.0.0

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description does not contradict them and adds the conceptual split between scheduled objects and historical recurring charges, but says nothing about pagination, ordering, whether inactive/completed schedules are included, or auth/plan requirements.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, then two routing pointers. Every sentence earns its place with zero filler.

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

Completeness3/5

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

There is no output schema, so the description is the only place an agent could learn what a scheduled transaction record contains (date, amount, frequency, account, next occurrence) or how results are ordered. For a simple zero-required-param list tool this is adequate, but the return shape remains undocumented.

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 the schema already explains planId defaults to YNAB_PLAN_ID and that budgetId is a deprecated alias. The description adds no parameter guidance, so the baseline 3 applies since the schema does the heavy lifting.

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 ('Lists') and resource ('scheduled transactions set up in YNAB'), and immediately distinguishes itself from ynab_detect_recurring (transaction-history recurring charges) and ynab_balance_forecast (projection). An agent can differentiate it from ynab_get_transactions and the recurring sibling without opening any schema.

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?

Names two alternatives with explicit conditions for choosing each ('To find recurring charges in transaction history... use ynab_detect_recurring', 'For a projected balance, use ynab_balance_forecast'). It does not state the positive condition for this tool (e.g., 'use when the user wants upcoming scheduled entries'), but the contrast makes the routing clear.

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