Actual

64 tools. 37 can modify or destroy data without limits.

8 destructive tools with no built-in limits. Policy required.

Last updated:

37 can modify or destroy data
27 read-only
64 tools total

Community server · catalogue entry checked 28/06/2026

How to control Actual ↓

What Actual exposes to your agents

Read (27) Write / Execute (28) Destructive / Financial (8)
Critical Risk

The most dangerous Actual tools

37 of Actual's 64 tools can modify, destroy, or commit something on every call — and an agent calls them with no built-in limits.

How to control Actual

PolicyLayer is an MCP gateway — it sits between your AI agents and Actual, and nothing reaches the server without passing your rules. These are the rules we recommend:

Deny destructive operations
{
  "actual_accounts_delete": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Blocked by default. Requires approval."
      }
    ]
  }
}

Destructive tools should never be available to autonomous agents without human approval.

Rate limit write operations
{
  "actual_accounts_close": {
    "limits": [
      {
        "counter": "actual_accounts_close_per_hour",
        "window": "hour",
        "max": 30,
        "scope": "grant"
      }
    ]
  }
}

Prevents bulk unintended modifications from agents caught in loops.

Cap read operations
{
  "actual_accounts_list": {
    "limits": [
      {
        "counter": "actual_accounts_list_per_minute",
        "window": "minute",
        "max": 60,
        "scope": "grant"
      }
    ]
  }
}

Controls API costs and prevents retry loops from exhausting upstream rate limits.

  1. Create a free account and register Actual — nothing to install.
  2. Add these rules — paste them, or build them visually. Tune the limits to your setup.
  3. Point your MCP client (Claude, Cursor, anything) at your gateway URL.
ENFORCE POLICY ON ACTUAL →

Instant setup, no code required.

All 64 Actual tools

WRITE 26 tools
Write actual_accounts_close Mark an account as closed in Actual Budget. Closed accounts are hidden from most views but their transaction h Write actual_accounts_create Create a new account in Actual Budget Write actual_accounts_reopen Reopen a previously closed account in Actual Budget. The account will become active again and visible in all v Write actual_budgets_holdForNextMonth Hold an amount from this month Write actual_budgets_resetHold Reset the budget hold for a month, releasing any amount previously held for next month via holdBudgetForNextMo Write actual_budgets_setAmount Set the budgeted amount for a specific category in a given month. Amount in cents (e.g., 50000 = $500). Use th Write actual_budgets_setCarryover Set carryover behavior for a category in a specific month. When enabled (true), leftover budget or overspendin Write actual_budgets_switch Switch to a different pre-configured budget for all subsequent operations in this session. Write actual_budgets_transfer Transfer budget amount between categories. Decreases the source category budget and increases the target categ Write actual_categories_create Create a category. REQUIRED: group_id (category group UUID). Use actual_category_groups_get to find available Write actual_categories_update Update an existing category in Actual Budget. You can rename the category, move it to a different group, or ch Write actual_category_groups_create Create a new category group in Actual Budget. Category groups help organize categories into logical sections ( Write actual_category_groups_update Update an existing category group in Actual Budget. You can rename the group, change whether it Write actual_notes_update Set or clear the note attached to an entity in Actual Budget. Write actual_payees_create Create a new payee in Actual Budget Write actual_payees_merge Merge one or more payees into a target payee. This consolidates duplicate payees by merging the specified paye Write actual_rules_update Update an existing budget rule by ID. Only provide the fields you want to change. IMPORTANT Field Types: - Write actual_schedules_create Create a new schedule in Actual Budget. Schedules can be one-off (supply a YYYY-MM-DD date string) or recurrin Write actual_schedules_update Update an existing schedule in Actual Budget. Supply the schedule Write actual_tags_create Create a new tag in Actual Budget. The Write actual_tags_update Update an existing tag in Actual Budget. At least one of tag/color/description must be provided. Write actual_transactions_create Create a new transaction in Actual Budget. Amount should be in cents (negative for expenses, positive for inco Write actual_transactions_import Bulk import transactions with automatic reconciliation and duplicate detection. Matches against existing trans Write actual_transactions_update Update an existing transaction in Actual Budget. Provide the transaction ID and the fields you want to update. Write actual_transfers_create Create a paired transfer between two accounts — a debit on the source account and a credit Write math.add Add two numbers
READ 27 tools
Read actual_accounts_list List all accounts in Actual Budget including checking, savings, credit cards, and investment accounts. Returns Read actual_budgets_get_all Get a list of all available budget files. Useful for multi-budget management and discovering available budgets Read actual_budgets_getMonth Get budget data for a specific month in YYYY-MM format (e.g., Read actual_budgets_getMonths Get a list of all available budget months with summary data. Returns an array of months showing total budgeted Read actual_budgets_list_available List all pre-configured budgets available for switching. Read actual_categories_get List all budget categories organized by category groups. Categories are spending/income buckets (e.g., Groceri Read actual_category_groups_get List all category groups in Actual Budget. Category groups organize related categories together (e.g., Read actual_entities_search Find accounts, categories, or payees by a name pattern. Use this to resolve a partial or mistyped name to its Read actual_get_id_by_name Resolve an entity name to its UUID. Looks up the UUID for any Account, Payee, Category, or Schedule by their Read actual_notes_get Get the note attached to an entity in Actual Budget. Read actual_payee_rules_get Get all payee rules associated with a specific payee. Returns PayeeRule objects that show how transactions wit Read actual_payees_common_list Return the most frequently used payees from recent transaction history (last ~12 weeks, top 10, Read actual_payees_get List all payees in Actual Budget. Payees represent merchants, service providers, individuals, or other entitie Read actual_rules_get List all budget rules in Actual Budget. Rules automate transaction categorization and other budget operations Read actual_schedules_get List all schedules in Actual Budget. Schedules automate recurring transactions (e.g. monthly rent, weekly groc Read actual_server_info Get MCP server version and system information. Returns: - Server version - Server name - Node.js version - MC Read actual_session_list List all active MCP sessions with their activity status. Useful for diagnosing connection issues or seeing whi Read actual_tags_list List all tags defined in Actual Budget. Tags are stored without a leading Read actual_transactions_filter Get transactions with advanced filtering. Supports filtering by amount range, category, payee, notes, and stat Read actual_transactions_get Get all transactions for a specific account within a date range. Returns transaction details including date, a Read actual_transactions_search_by_amount Search transactions by amount. Supports two modes: (1) Signed amount range using minAmount/maxAmount (expenses Read actual_transactions_search_by_category Search transactions by category name. Returns all transactions in a specific category with optional date range Read actual_transactions_search_by_month Search transactions for a specific month. Returns all transactions matching the month and optional filters (ac Read actual_transactions_search_by_payee Search transactions by payee name. Returns all transactions for a specific payee with optional date range, cat Read actual_transactions_summary_by_category Get spending summary grouped by category using ActualQL aggregation. Returns total amount and transaction coun Read actual_transactions_summary_by_payee Get spending summary grouped by payee using ActualQL aggregation. Returns total amount and transaction count p Read search.docs Search a small demo document store

Related servers

Other MCP servers with similar tools — same risk classification, starter policies for each.

Questions about Actual

Can an AI agent delete data through the Actual MCP server? +

Yes. The Actual server exposes 8 destructive tools including actual_accounts_delete, actual_categories_delete, actual_category_groups_delete. These permanently remove resources with no undo. PolicyLayer blocks destructive tools by default so they never reach the upstream server.

How do I prevent bulk modifications through Actual? +

The Actual server has 26 write tools including actual_accounts_close, actual_accounts_create, actual_accounts_reopen. Set a rate limit in your policy -- for example, 10 calls per hour prevents an agent from making more than 10 modifications per hour. PolicyLayer enforces this at the gateway, before calls reach Actual.

How many tools does the Actual MCP server expose? +

64 tools across 5 categories: Destructive, Execute, Financial, Read, Write. 27 are read-only. 37 can modify, create, or delete data.

How do I enforce a policy on Actual? +

Register the Actual MCP server in PolicyLayer, apply the suggested rules above (adjust the limits to your use case), and point your AI client at the PolicyLayer proxy URL instead of the server directly. Your agents keep the same tools; PolicyLayer evaluates every call against policy before it executes. Nothing to install, live in minutes.

Enforce policy on every Actual tool call.

Deterministic rules across all 64 Actual tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Instant setup, no code required.

64 Actual tools catalogued and risk-classified — across an index of 46,500+ MCP servers.

// WHERE THIS COMES FROM

These policies come from Actual's registry record.

The record behind this page: verified identity, auth posture, risk grade, every tool classified, recommended policy — re-checked continuously.

Teams ship this data inside their own products. See what a licence covers →

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.