Skip to main content
Glama
partymola

monzo-mcp

monzo_sync

Sync Monzo transactions, balances, and pots into a local cache to enable spending analysis and transaction search across personal and joint accounts.

Instructions

Sync transactions, balances, and pots from the Monzo API into the local cache.

Fetches up to 11 months of history (within SCA window) or falls back to the last-synced timestamp / 90 days. Handles pagination and auth-hold deduplication automatically. Declined card attempts are not stored. Only current and joint accounts are synced; any other is listed as skipped.

Args: account_type: "personal", "joint", or None to sync both since: Optional ISO date ("2026-01-01") or datetime ("2026-01-01T14:30:00Z") to start the backfill from, overriding last-sync resumption. Reaching beyond ~90 days only works inside the post-auth SCA window.

Input Schema

NameRequiredDescriptionDefault
sinceNo
account_typeNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.9.0
    • changedInput schema / properties / account_type / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "personal",
      +      "joint"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed1 schema field changedv0.2.1
    • addedInput schema / properties / since
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Since"
      +}
  3. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the history window, SCA-window limitation, pagination handling, auth-hold deduplication, that declined attempts are not stored, and that unsupported account types are skipped. These are exactly the side effects and constraints 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-loaded with the one-line purpose followed by behavioral detail, then a clean Args block. Every sentence is substantive; slightly dense but nothing is wasted.

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

Completeness5/5

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

An output schema exists, so return values need not be explained, and the description covers scope, fallbacks, exclusions, and parameter semantics thoroughly. Nothing an agent needs to call this correctly is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate and does: account_type values ('personal', 'joint', None=bith) and since (ISO date or datetime, overrides last-sync resumption, ~90-day SCA caveat) are all documented with meaning and edge cases.

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 (Sync) and concrete resources (transactions, balances, pots) plus the destination (local cache), which cleanly separates it from the read-only list/get siblings. An agent can tell this is the cache-population tool without opening the schema.

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?

The description explains internal behavior (11-month window, fallback to last-sync/90 days, SCA constraints) but never states when to call this versus monzo_list_transactions or monzo_search_transactions, nor that it should be run before querying the cache. Usage is implied rather than directed.

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