{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "cards": {
      "minItems": 1,
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "What the person calls this card, e.g. \"TD Cash Back Visa\" or \"the blue one\"."
          },
          "creditLimit": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000000,
            "description": "Credit limit in CAD. Use 0 for a charge card or any account with no set limit \u2014 it is then excluded from utilization."
          },
          "statementBalance": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000000,
            "description": "Balance at the most recent statement close. This is the figure the issuer reported, and the one utilization is read from. If only today's balance is known, pass it here and say so."
          },
          "currentBalance": {
            "description": "Today's balance, if it differs from the statement balance. Defaults to statementBalance.",
            "type": "number",
            "minimum": 0,
            "maximum": 100000000
          },
          "statementCloseDate": {
            "description": "The day the NEXT statement closes \u2014 the date the engine targets. Found on a statement or in online banking. If omitted, a placeholder 30 days out is assumed and flagged.",
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "dueDate": {
            "description": "Payment due date for the current statement. Defaults to 21 days after the closing date.",
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "minimumPayment": {
            "description": "The issuer's minimum payment. Omit if unknown \u2014 do not pass 0 to mean unknown.",
            "type": "number",
            "minimum": 0,
            "maximum": 100000000
          },
          "aprPercent": {
            "description": "Purchase APR as a percentage, e.g. 19.99. Omit when unknown. Never pass 0 to mean unknown \u2014 0 is a real interest-free rate and cost estimates would understate what a balance costs.",
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "isOverdue": {
            "description": "True if a payment is past due right now.",
            "type": "boolean"
          },
          "last4": {
            "description": "Last four digits, only to tell two similar cards apart. Optional and never required.",
            "type": "string",
            "maxLength": 4
          }
        },
        "required": [
          "name",
          "creditLimit",
          "statementBalance"
        ]
      },
      "description": "The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card \u2014 those three drive everything."
    },
    "today": {
      "description": "Today's date in the person's local timezone, yyyy-mm-dd. Pass it \u2014 the server otherwise falls back to UTC, which is a day ahead for Canadian evenings.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "count": {
      "description": "How many events to return. Default 8.",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    }
  },
  "required": [
    "cards"
  ],
  "title": "get_statement_calendar",
  "x-source": "tools/list from https://mcp.creditgps.ca/mcp (2026-11-04), inputSchema verbatim"
}