{
  "schemaVersion": "1.0",
  "item": {
    "slug": "monzo",
    "name": "Monzo",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/RHesketh/monzo",
    "canonicalUrl": "https://clawhub.ai/RHesketh/monzo",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/monzo",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=monzo",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SECURITY.md",
      "SKILL.md",
      "scripts/balance.sh",
      "scripts/feed.sh",
      "scripts/pots.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/monzo"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/monzo",
    "agentPageUrl": "https://openagent3.xyz/skills/monzo/agent",
    "manifestUrl": "https://openagent3.xyz/skills/monzo/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/monzo/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Monzo Banking Skill",
        "body": "Access your Monzo bank account to check balances, view transactions, manage savings pots, and send notifications to your Monzo app."
      },
      {
        "title": "Prerequisites",
        "body": "Before setting up this skill, you need:\n\nA Monzo account (UK personal, joint, or business account)\nThe Monzo app installed on your phone (for SCA approval)\nOpenClaw running with workspace access\nStandard tools: curl, jq, openssl, bc (pre-installed on most Linux systems)"
      },
      {
        "title": "Quick Start (TL;DR)",
        "body": "# 1. Set the MONZO_KEYRING_PASSWORD env var (see \"Setting the Password\" below)\n\n# 2. Create OAuth client at https://developers.monzo.com/\n#    - Set Confidentiality: Confidential\n#    - Set Redirect URL: http://localhost\n\n# 3. Run setup\nscripts/setup.sh\n\n# 4. Approve in Monzo app when prompted, then:\nscripts/setup.sh --continue\n\n# 5. Test it\nscripts/balance.sh"
      },
      {
        "title": "Step 1: Set the Encryption Password",
        "body": "The MONZO_KEYRING_PASSWORD environment variable is used to encrypt your Monzo credentials at rest. Choose a strong, unique password and don't lose it — you'll need it if you ever move or restore the skill.\n\nThere are several ways to provide this variable. Choose whichever fits your setup:\n\nOption A: OpenClaw skill config (simplest)\n\nAdd to your OpenClaw config (e.g. openclaw.json):\n\n{\n  skills: {\n    entries: {\n      \"monzo\": {\n        enabled: true,\n        env: {\n          \"MONZO_KEYRING_PASSWORD\": \"choose-a-secure-password-here\"\n        }\n      }\n    }\n  }\n}\n\nThen restart: openclaw gateway restart\n\nNote: This stores the password in plaintext in the config file. Ensure the file has restrictive permissions (chmod 600) and is not checked into version control.\n\nOption B: Shell environment (keeps password out of config files)\n\nAdd to your shell profile (~/.bashrc, ~/.zshrc, etc.):\n\nexport MONZO_KEYRING_PASSWORD=\"choose-a-secure-password-here\"\n\nThen restart your shell and OpenClaw.\n\nOption C: systemd EnvironmentFile (for server deployments)\n\nCreate a secrets file (e.g. /etc/openclaw/monzo.env):\n\nMONZO_KEYRING_PASSWORD=choose-a-secure-password-here\n\nSet permissions: chmod 600 /etc/openclaw/monzo.env\n\nReference it from your systemd unit with EnvironmentFile=/etc/openclaw/monzo.env.\n\nOption D: Password manager / secrets manager\n\nUse your preferred secrets tool to inject the env var at runtime. Any method that sets MONZO_KEYRING_PASSWORD in the process environment will work."
      },
      {
        "title": "Step 2: Create Monzo OAuth Client",
        "body": "Go to https://developers.monzo.com/ and sign in with your Monzo account\nClick \"Clients\" → \"New OAuth Client\"\nFill in:\n\nName: OpenClaw (or your preferred name)\nLogo URL: (leave blank)\nRedirect URLs: http://localhost ← exactly this, no trailing slash\nDescription: (leave blank)\nConfidentiality: Confidential ← ⚠️ Important! Enables refresh tokens\n\n\nClick Submit\nNote your Client ID (oauth2client_...) and Client Secret (mnzconf....)"
      },
      {
        "title": "Step 3: Run the Setup Wizard",
        "body": "scripts/setup.sh\n\nThe wizard will:\n\nAsk for your Client ID and Client Secret\nGive you an authorization URL to open in your browser\nAsk you to paste the redirect URL back\nExchange the code for access tokens\nSave encrypted credentials\n\nAlternative: Non-interactive mode (useful for automation or agents):\n\nscripts/setup.sh --non-interactive \\\n  --client-id oauth2client_xxx \\\n  --client-secret mnzconf.xxx \\\n  --auth-code eyJ..."
      },
      {
        "title": "Step 4: Approve in Monzo App (SCA)",
        "body": "⚠️ This step is required! Monzo requires Strong Customer Authentication.\n\nOpen the Monzo app on your phone\nLook for a notification about \"API access\" or a new connection\nTap to approve\n\nIf you don't see a notification:\n\nGo to Account → Settings → Privacy & Security → Manage connected apps\nFind and approve your client\n\nAfter approving, complete setup:\n\nscripts/setup.sh --continue"
      },
      {
        "title": "Step 5: Verify It Works",
        "body": "# Check authentication\nscripts/whoami.sh\n\n# Check your balance\nscripts/balance.sh\n\nYou should see your account info and current balance. You're done! 🎉"
      },
      {
        "title": "For the Agent",
        "body": "This section tells the agent how to use this skill effectively."
      },
      {
        "title": "When to Use This Skill",
        "body": "Use this skill when the user asks about:\n\nBalance: \"How much money do I have?\", \"What's my balance?\"\nTransactions: \"What did I spend on X?\", \"Show recent transactions\"\nSpending analysis: \"How much did I spend on coffee this month?\"\nSavings: \"How much is in my savings?\", \"Move £X to my holiday pot\"\nNotifications: \"Send a reminder to my Monzo app\""
      },
      {
        "title": "Common Patterns",
        "body": "# \"How much money do I have?\"\nscripts/balance.sh\n\n# \"Show me recent transactions\" / \"What did I spend?\"\nscripts/transactions.sh              # All available, newest first\n\n# \"Show me my last 5 transactions\"\nscripts/transactions.sh --limit 5    # 5 most recent\n\n# \"What did I spend this week?\"\nscripts/transactions.sh --since 7d\n\n# \"How much did I spend on coffee this month?\"\nscripts/transactions.sh --search coffee --since 30d\n\n# \"What are my savings pots?\"\nscripts/pots.sh\n\n# \"Put £50 in my holiday fund\"\nscripts/pots.sh deposit pot_XXXXX 5000  # Amount in pence!\n\n# \"Send a reminder to my phone\"\nscripts/feed.sh --title \"Don't forget!\" --body \"Check the gas meter\""
      },
      {
        "title": "Important Notes for Agents",
        "body": "Money is in pence: £50 = 5000, £1.50 = 150\nDates can be relative: --since 7d means last 7 days\nUse human-readable output by default (no --json flag)\nPot IDs: Use scripts/pots.sh first to get pot IDs before depositing/withdrawing\nMultiple accounts: User may have personal, joint, and business accounts. Default is personal. Use scripts/whoami.sh to see all accounts."
      },
      {
        "title": "Error Handling",
        "body": "If you see forbidden.insufficient_permissions:\n\nTell the user to check their Monzo app and approve API access\nThen run scripts/setup.sh --continue\n\nIf you see MONZO_KEYRING_PASSWORD not set:\n\nThe env var isn't available in the process environment\nGuide user to set it using one of the methods in Step 1 of the setup guide"
      },
      {
        "title": "balance - Check Account Balance",
        "body": "scripts/balance.sh                 # Default account\nscripts/balance.sh acc_...         # Specific account\nscripts/balance.sh --json          # JSON output\n\nOutput:\n\nCurrent Balance: £1,234.56\nTotal (with pots): £2,500.00\nSpent today: £12.34"
      },
      {
        "title": "transactions - Transaction History",
        "body": "Fetches all available transactions (paginated), displayed newest first.\n\nscripts/transactions.sh                         # All transactions, newest first\nscripts/transactions.sh --limit 10              # 10 most recent\nscripts/transactions.sh --since 7d              # Last 7 days only\nscripts/transactions.sh --since 2026-01-01      # Since specific date\nscripts/transactions.sh --search coffee         # Search by merchant/description/notes\nscripts/transactions.sh --search \"Pret\" --since 30d  # Combined filters\nscripts/transactions.sh --id tx_...             # Get specific transaction\nscripts/transactions.sh --json                  # JSON output\n\nOutput:\n\nDATE         AMOUNT     DESCRIPTION                          CATEGORY\n============ ========== =================================== ===============\n2026-01-29  -£3.50     Pret A Manger                       eating_out\n2026-01-29  -£12.00    TfL                                 transport\n2026-01-28  -£45.23    Tesco                               groceries\n\nTotal: 3 transaction(s)"
      },
      {
        "title": "pots - Savings Management",
        "body": "scripts/pots.sh                              # List all pots\nscripts/pots.sh list --json                  # JSON output\nscripts/pots.sh deposit pot_... 5000         # Deposit £50 (5000 pence)\nscripts/pots.sh withdraw pot_... 2000        # Withdraw £20 (2000 pence)\n\nOutput (list):\n\nNAME                      BALANCE      GOAL         ID\n========================= ============ ============ ====================\nHoliday Fund              £450.00      £1,000.00    pot_0000...\nEmergency                 £2,000.00    £3,000.00    pot_0001..."
      },
      {
        "title": "feed - Send App Notifications",
        "body": "scripts/feed.sh --title \"Reminder\"                        # Simple notification\nscripts/feed.sh --title \"Alert\" --body \"Details here\"    # With body\nscripts/feed.sh --title \"Link\" --url \"https://...\"       # With tap action"
      },
      {
        "title": "whoami - Check Authentication",
        "body": "scripts/whoami.sh                  # Show auth status and accounts\nscripts/whoami.sh --account-id     # Just the default account ID\nscripts/whoami.sh --json           # JSON output"
      },
      {
        "title": "receipt - Attach Receipts to Transactions",
        "body": "scripts/receipt.sh create tx_... --merchant \"Shop\" --total 1234 --item \"Thing:1234\"\nscripts/receipt.sh get ext_...\nscripts/receipt.sh delete ext_..."
      },
      {
        "title": "webhooks - Manage Webhooks (Advanced)",
        "body": "scripts/webhooks.sh list\nscripts/webhooks.sh create https://your-server.com/webhook\nscripts/webhooks.sh delete webhook_..."
      },
      {
        "title": "\"forbidden.insufficient_permissions\"",
        "body": "Most common issue! Monzo requires app approval (SCA).\n\nFix:\n\nOpen Monzo app → check for notification → approve\nOr: Account → Settings → Privacy & Security → Manage connected apps → approve\nRun: scripts/setup.sh --continue"
      },
      {
        "title": "\"MONZO_KEYRING_PASSWORD not set\"",
        "body": "The env var isn't available in the process environment.\n\nFix: Set MONZO_KEYRING_PASSWORD using any of the methods described in Step 1 of the setup guide, then restart OpenClaw."
      },
      {
        "title": "\"Authorization code has been used\"",
        "body": "Each auth code is single-use. Start fresh:\n\nscripts/setup.sh --reset"
      },
      {
        "title": "\"No refresh token received\"",
        "body": "Your OAuth client isn't set to \"Confidential\". Create a new client with Confidentiality = Confidential, then:\n\nscripts/setup.sh --reset"
      },
      {
        "title": "\"Credentials file not found\"",
        "body": "Run setup first:\n\nscripts/setup.sh"
      },
      {
        "title": "\"Failed to decrypt credentials\"",
        "body": "Wrong MONZO_KEYRING_PASSWORD. Check your config matches what you used during setup."
      },
      {
        "title": "Security Notes",
        "body": "Credentials are encrypted at rest (AES-256-CBC)\nEncryption key is your MONZO_KEYRING_PASSWORD\nAccess tokens auto-refresh (no manual intervention needed)\nFile permissions are set to 600 (owner only)\nAll API calls use HTTPS\nNo sensitive data is logged"
      },
      {
        "title": "Files",
        "body": "skills/monzo/\n├── SKILL.md              # This documentation\n└── scripts/\n    ├── lib/monzo.sh      # Shared library\n    ├── setup             # OAuth setup wizard\n    ├── whoami            # Validate authentication\n    ├── balance           # Check balance\n    ├── transactions      # Transaction history\n    ├── pots              # Savings pots\n    ├── feed              # App notifications\n    ├── receipt           # Receipt management\n    └── webhooks          # Webhook management\n\nCredentials: ~/.openclaw/credentials/monzo.json (encrypted, or ~/.clawdbot/credentials/monzo.json on older installs)"
      },
      {
        "title": "API Coverage",
        "body": "FeatureScriptsAuthenticationsetup, whoamiBalancebalanceTransactionstransactionsPots (Savings)potsFeed (Notifications)feedReceiptsreceiptWebhookswebhooks"
      }
    ],
    "body": "Monzo Banking Skill\n\nAccess your Monzo bank account to check balances, view transactions, manage savings pots, and send notifications to your Monzo app.\n\nPrerequisites\n\nBefore setting up this skill, you need:\n\nA Monzo account (UK personal, joint, or business account)\nThe Monzo app installed on your phone (for SCA approval)\nOpenClaw running with workspace access\nStandard tools: curl, jq, openssl, bc (pre-installed on most Linux systems)\nQuick Start (TL;DR)\n# 1. Set the MONZO_KEYRING_PASSWORD env var (see \"Setting the Password\" below)\n\n# 2. Create OAuth client at https://developers.monzo.com/\n#    - Set Confidentiality: Confidential\n#    - Set Redirect URL: http://localhost\n\n# 3. Run setup\nscripts/setup.sh\n\n# 4. Approve in Monzo app when prompted, then:\nscripts/setup.sh --continue\n\n# 5. Test it\nscripts/balance.sh\n\nDetailed Setup Guide\nStep 1: Set the Encryption Password\n\nThe MONZO_KEYRING_PASSWORD environment variable is used to encrypt your Monzo credentials at rest. Choose a strong, unique password and don't lose it — you'll need it if you ever move or restore the skill.\n\nThere are several ways to provide this variable. Choose whichever fits your setup:\n\nOption A: OpenClaw skill config (simplest)\n\nAdd to your OpenClaw config (e.g. openclaw.json):\n\n{\n  skills: {\n    entries: {\n      \"monzo\": {\n        enabled: true,\n        env: {\n          \"MONZO_KEYRING_PASSWORD\": \"choose-a-secure-password-here\"\n        }\n      }\n    }\n  }\n}\n\n\nThen restart: openclaw gateway restart\n\nNote: This stores the password in plaintext in the config file. Ensure the file has restrictive permissions (chmod 600) and is not checked into version control.\n\nOption B: Shell environment (keeps password out of config files)\n\nAdd to your shell profile (~/.bashrc, ~/.zshrc, etc.):\n\nexport MONZO_KEYRING_PASSWORD=\"choose-a-secure-password-here\"\n\n\nThen restart your shell and OpenClaw.\n\nOption C: systemd EnvironmentFile (for server deployments)\n\nCreate a secrets file (e.g. /etc/openclaw/monzo.env):\n\nMONZO_KEYRING_PASSWORD=choose-a-secure-password-here\n\n\nSet permissions: chmod 600 /etc/openclaw/monzo.env\n\nReference it from your systemd unit with EnvironmentFile=/etc/openclaw/monzo.env.\n\nOption D: Password manager / secrets manager\n\nUse your preferred secrets tool to inject the env var at runtime. Any method that sets MONZO_KEYRING_PASSWORD in the process environment will work.\n\nStep 2: Create Monzo OAuth Client\nGo to https://developers.monzo.com/ and sign in with your Monzo account\nClick \"Clients\" → \"New OAuth Client\"\nFill in:\nName: OpenClaw (or your preferred name)\nLogo URL: (leave blank)\nRedirect URLs: http://localhost ← exactly this, no trailing slash\nDescription: (leave blank)\nConfidentiality: Confidential ← ⚠️ Important! Enables refresh tokens\nClick Submit\nNote your Client ID (oauth2client_...) and Client Secret (mnzconf....)\nStep 3: Run the Setup Wizard\nscripts/setup.sh\n\n\nThe wizard will:\n\nAsk for your Client ID and Client Secret\nGive you an authorization URL to open in your browser\nAsk you to paste the redirect URL back\nExchange the code for access tokens\nSave encrypted credentials\n\nAlternative: Non-interactive mode (useful for automation or agents):\n\nscripts/setup.sh --non-interactive \\\n  --client-id oauth2client_xxx \\\n  --client-secret mnzconf.xxx \\\n  --auth-code eyJ...\n\nStep 4: Approve in Monzo App (SCA)\n\n⚠️ This step is required! Monzo requires Strong Customer Authentication.\n\nOpen the Monzo app on your phone\nLook for a notification about \"API access\" or a new connection\nTap to approve\n\nIf you don't see a notification:\n\nGo to Account → Settings → Privacy & Security → Manage connected apps\nFind and approve your client\n\nAfter approving, complete setup:\n\nscripts/setup.sh --continue\n\nStep 5: Verify It Works\n# Check authentication\nscripts/whoami.sh\n\n# Check your balance\nscripts/balance.sh\n\n\nYou should see your account info and current balance. You're done! 🎉\n\nFor the Agent\n\nThis section tells the agent how to use this skill effectively.\n\nWhen to Use This Skill\n\nUse this skill when the user asks about:\n\nBalance: \"How much money do I have?\", \"What's my balance?\"\nTransactions: \"What did I spend on X?\", \"Show recent transactions\"\nSpending analysis: \"How much did I spend on coffee this month?\"\nSavings: \"How much is in my savings?\", \"Move £X to my holiday pot\"\nNotifications: \"Send a reminder to my Monzo app\"\nCommon Patterns\n# \"How much money do I have?\"\nscripts/balance.sh\n\n# \"Show me recent transactions\" / \"What did I spend?\"\nscripts/transactions.sh              # All available, newest first\n\n# \"Show me my last 5 transactions\"\nscripts/transactions.sh --limit 5    # 5 most recent\n\n# \"What did I spend this week?\"\nscripts/transactions.sh --since 7d\n\n# \"How much did I spend on coffee this month?\"\nscripts/transactions.sh --search coffee --since 30d\n\n# \"What are my savings pots?\"\nscripts/pots.sh\n\n# \"Put £50 in my holiday fund\"\nscripts/pots.sh deposit pot_XXXXX 5000  # Amount in pence!\n\n# \"Send a reminder to my phone\"\nscripts/feed.sh --title \"Don't forget!\" --body \"Check the gas meter\"\n\nImportant Notes for Agents\nMoney is in pence: £50 = 5000, £1.50 = 150\nDates can be relative: --since 7d means last 7 days\nUse human-readable output by default (no --json flag)\nPot IDs: Use scripts/pots.sh first to get pot IDs before depositing/withdrawing\nMultiple accounts: User may have personal, joint, and business accounts. Default is personal. Use scripts/whoami.sh to see all accounts.\nError Handling\n\nIf you see forbidden.insufficient_permissions:\n\nTell the user to check their Monzo app and approve API access\nThen run scripts/setup.sh --continue\n\nIf you see MONZO_KEYRING_PASSWORD not set:\n\nThe env var isn't available in the process environment\nGuide user to set it using one of the methods in Step 1 of the setup guide\nScript Reference\nbalance - Check Account Balance\nscripts/balance.sh                 # Default account\nscripts/balance.sh acc_...         # Specific account\nscripts/balance.sh --json          # JSON output\n\n\nOutput:\n\nCurrent Balance: £1,234.56\nTotal (with pots): £2,500.00\nSpent today: £12.34\n\ntransactions - Transaction History\n\nFetches all available transactions (paginated), displayed newest first.\n\nscripts/transactions.sh                         # All transactions, newest first\nscripts/transactions.sh --limit 10              # 10 most recent\nscripts/transactions.sh --since 7d              # Last 7 days only\nscripts/transactions.sh --since 2026-01-01      # Since specific date\nscripts/transactions.sh --search coffee         # Search by merchant/description/notes\nscripts/transactions.sh --search \"Pret\" --since 30d  # Combined filters\nscripts/transactions.sh --id tx_...             # Get specific transaction\nscripts/transactions.sh --json                  # JSON output\n\n\nOutput:\n\nDATE         AMOUNT     DESCRIPTION                          CATEGORY\n============ ========== =================================== ===============\n2026-01-29  -£3.50     Pret A Manger                       eating_out\n2026-01-29  -£12.00    TfL                                 transport\n2026-01-28  -£45.23    Tesco                               groceries\n\nTotal: 3 transaction(s)\n\npots - Savings Management\nscripts/pots.sh                              # List all pots\nscripts/pots.sh list --json                  # JSON output\nscripts/pots.sh deposit pot_... 5000         # Deposit £50 (5000 pence)\nscripts/pots.sh withdraw pot_... 2000        # Withdraw £20 (2000 pence)\n\n\nOutput (list):\n\nNAME                      BALANCE      GOAL         ID\n========================= ============ ============ ====================\nHoliday Fund              £450.00      £1,000.00    pot_0000...\nEmergency                 £2,000.00    £3,000.00    pot_0001...\n\nfeed - Send App Notifications\nscripts/feed.sh --title \"Reminder\"                        # Simple notification\nscripts/feed.sh --title \"Alert\" --body \"Details here\"    # With body\nscripts/feed.sh --title \"Link\" --url \"https://...\"       # With tap action\n\nwhoami - Check Authentication\nscripts/whoami.sh                  # Show auth status and accounts\nscripts/whoami.sh --account-id     # Just the default account ID\nscripts/whoami.sh --json           # JSON output\n\nreceipt - Attach Receipts to Transactions\nscripts/receipt.sh create tx_... --merchant \"Shop\" --total 1234 --item \"Thing:1234\"\nscripts/receipt.sh get ext_...\nscripts/receipt.sh delete ext_...\n\nwebhooks - Manage Webhooks (Advanced)\nscripts/webhooks.sh list\nscripts/webhooks.sh create https://your-server.com/webhook\nscripts/webhooks.sh delete webhook_...\n\nTroubleshooting\n\"forbidden.insufficient_permissions\"\n\nMost common issue! Monzo requires app approval (SCA).\n\nFix:\n\nOpen Monzo app → check for notification → approve\nOr: Account → Settings → Privacy & Security → Manage connected apps → approve\nRun: scripts/setup.sh --continue\n\"MONZO_KEYRING_PASSWORD not set\"\n\nThe env var isn't available in the process environment.\n\nFix: Set MONZO_KEYRING_PASSWORD using any of the methods described in Step 1 of the setup guide, then restart OpenClaw.\n\n\"Authorization code has been used\"\n\nEach auth code is single-use. Start fresh:\n\nscripts/setup.sh --reset\n\n\"No refresh token received\"\n\nYour OAuth client isn't set to \"Confidential\". Create a new client with Confidentiality = Confidential, then:\n\nscripts/setup.sh --reset\n\n\"Credentials file not found\"\n\nRun setup first:\n\nscripts/setup.sh\n\n\"Failed to decrypt credentials\"\n\nWrong MONZO_KEYRING_PASSWORD. Check your config matches what you used during setup.\n\nSecurity Notes\nCredentials are encrypted at rest (AES-256-CBC)\nEncryption key is your MONZO_KEYRING_PASSWORD\nAccess tokens auto-refresh (no manual intervention needed)\nFile permissions are set to 600 (owner only)\nAll API calls use HTTPS\nNo sensitive data is logged\nFiles\nskills/monzo/\n├── SKILL.md              # This documentation\n└── scripts/\n    ├── lib/monzo.sh      # Shared library\n    ├── setup             # OAuth setup wizard\n    ├── whoami            # Validate authentication\n    ├── balance           # Check balance\n    ├── transactions      # Transaction history\n    ├── pots              # Savings pots\n    ├── feed              # App notifications\n    ├── receipt           # Receipt management\n    └── webhooks          # Webhook management\n\n\nCredentials: ~/.openclaw/credentials/monzo.json (encrypted, or ~/.clawdbot/credentials/monzo.json on older installs)\n\nAPI Coverage\nFeature\tScripts\nAuthentication\tsetup, whoami\nBalance\tbalance\nTransactions\ttransactions\nPots (Savings)\tpots\nFeed (Notifications)\tfeed\nReceipts\treceipt\nWebhooks\twebhooks"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/RHesketh/monzo",
    "publisherUrl": "https://clawhub.ai/RHesketh/monzo",
    "owner": "RHesketh",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/monzo",
    "downloadUrl": "https://openagent3.xyz/downloads/monzo",
    "agentUrl": "https://openagent3.xyz/skills/monzo/agent",
    "manifestUrl": "https://openagent3.xyz/skills/monzo/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/monzo/agent.md"
  }
}