Skip to main content
Glama
lapin7771n

Wallet BudgetBakers MCP

by lapin7771n

Wallet by BudgetBakers — MCP Server

Read-only MCP server for accessing Wallet by BudgetBakers financial data from Claude.

Prerequisites

Related MCP server: BudgetBakers Wallet MCP Server

Setup

1. Set your API token

export WALLET_API_TOKEN=your_token_here

The project includes .mcp.json — Claude Code auto-discovers the server. Just open the project directory:

cd wallet-bb-mcp
claude
# /mcp should show "wallet-bb" connected

3. Claude Desktop / Cowork

  1. Open Claude DesktopSettings (gear icon) → DeveloperEdit Config

  2. This opens claude_desktop_config.json in your editor. Add the mcpServers block:

{
  "mcpServers": {
    "wallet-bb": {
      "command": "/Users/YOUR_USERNAME/.local/bin/uv",
      "args": ["--directory", "/path/to/wallet-bb-mcp", "run", "server.py"],
      "env": {
        "WALLET_API_TOKEN": "your_token_here"
      }
    }
  }
}
  1. Replace the values:

    • command — full path to uv (run which uv in terminal to get it)

    • --directory argument — full path to this project

    • WALLET_API_TOKEN — your actual token (env var interpolation doesn't work here)

  2. Save the file and restart Claude Desktop

  3. You should see an MCP tools indicator (hammer icon) in the chat input area

4. Claude.ai Connector (remote)

The server can be deployed to Google Cloud Run and used as a remote MCP connector:

  1. Go to claude.ai → Profile → SettingsIntegrations

  2. Click Add custom integration

  3. Enter the server URL: https://<your-cloud-run-service-url>/mcp

  4. No authentication required — the Wallet API token is stored server-side

Cloud Run Deployment

The server supports both local (stdio) and remote (HTTP) transport. Cloud Run deployment is automated via GitHub Actions.

How it works

  • Push to main triggers .github/workflows/deploy.yml

  • Cloud Build builds the Docker image from Dockerfile

  • Cloud Run deploys the new revision to europe-central2

  • Auth is handled via Workload Identity Federation (keyless)

Manual deployment

gcloud run deploy wallet-bb-mcp \
  --source . \
  --region europe-central2 \
  --project wallet-bb-mcp \
  --allow-unauthenticated \
  --set-env-vars "WALLET_API_TOKEN=your_token" \
  --port 8080

Local HTTP mode

MCP_TRANSPORT=streamable-http WALLET_API_TOKEN=your_token uv run server.py
# Health check: curl http://localhost:8080/health
# MCP endpoint: http://localhost:8080/mcp

Available Tools

Tool

Description

get_accounts

List financial accounts (bank, cash, cards). Start here.

get_records

Get transactions for an account (requires account ID)

get_records_by_id

Get specific records by IDs (max 30)

get_categories

List spending/income categories

get_budgets

List budgets with limits and spent amounts

get_goals

List savings goals with progress

get_labels

List custom labels/tags

get_standing_orders

List recurring payments

get_record_rules

List auto-categorization rules

get_api_usage

Check API usage quota

Filter Syntax

All text fields support filter prefixes:

Prefix

Example

Meaning

eq.

eq.Groceries

Exact match

contains.

contains.bank

Contains (case-sensitive)

contains-i.

contains-i.amazon

Contains (case-insensitive)

Range filters for dates, amounts, and timestamps:

Prefix

Example

Meaning

gte.

gte.2025-01-01

Greater than or equal

lte.

lte.2025-12-31

Less than or equal

Combined

gte.100,lte.500

Between 100 and 500

Rate Limits

  • 500 requests per hour

  • Use get_api_usage() to check remaining quota

  • Server returns structured error with Retry-After on HTTP 429

Available Tools

10 tools
get_accountsA

Get all financial accounts (bank accounts, cash, cards, etc.).

Use this first to discover account IDs — you'll need them for get_records().

Args: ctx: MCP context limit: Items per page (1-100, default 30) offset: Items to skip for pagination account_id: Filter by exact account ID name: Filter by account name (use prefix: eq., contains., contains-i.) account_type: Filter by type (e.g. general, loan, insurance) currency_code: Filter by ISO currency code (e.g. UAH, USD, EUR) bank_account_number: Filter by bank account number created_at: Filter by creation date (e.g. "gte.2025-01-01") updated_at: Filter by last update date (e.g. "gte.2025-01-01")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo
account_idNo
created_atNo
updated_atNo
account_typeNo
currency_codeNo
bank_account_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses pagination behavior (limit/offset), filter semantics with prefix syntax (eq., contains., contains-i., gte.), and the discovery workflow. It does not explicitly state read-only/auth requirements, but 'Get' strongly implies a safe read operation, and the detailed parameter behavior adds useful context.

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?

The description is front-loaded with the purpose, followed by a one-line usage note, then a clean bulleted parameter list. Every line adds value, and the length is appropriate for the number of parameters.

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?

Despite having an output schema that covers return values, the description still explains the relationship to get_records, pagination, filtering, and all parameter semantics. It is complete for a list/discovery tool with this complexity.

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?

The input schema has zero descriptions, yet the tool description documents all 9 parameters with types, defaults, examples, and filter syntax. This fully compensates for the schema's lack of coverage and goes well beyond the baseline.

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?

The description opens with a specific verb and resource: 'Get all financial accounts (bank accounts, cash, cards, etc.)'. It also differentiates itself from siblings by noting it should be used first to discover account IDs, clearly positioning it as the account-discovery tool.

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?

It explicitly instructs 'Use this first to discover account IDs — you'll need them for get_records()', which provides a clear use case and relationship to an alternative tool. It does not list when-not-to-use scenarios, but the guidance is strong enough for an agent to select it appropriately.

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

get_api_usageB

Get API usage statistics.

Args: ctx: MCP context period: Time period — format is Xdays, Xweeks, or Xmonths (e.g. "30days", "4weeks", "3months")

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNo30days

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose side effects, authentication requirements, rate limits, or what specific statistics are returned. The verb 'Get' implies read-only, but this is not explicitly stated, and no other behavioral context is given.

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?

The description is concise and front-loaded with the core purpose. The Arg section is compact, but the inclusion of 'ctx' (not in schema) adds minor noise. Overall, it is efficient and earns its place without redundancy.

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?

Given the tool's simplicity (one optional parameter, output schema exists), the description is minimally adequate. It covers the period format, but lacks usage guidance and behavioral transparency. The output schema likely explains return values, so that is not a gap. Still, the absence of when-to-use context leaves the description incomplete for a fully informed agent.

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

Parameters4/5

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

Schema description coverage is 0%, but the description adds valuable context by specifying the period format (Xdays, Xweeks, Xmonths) with examples. This goes beyond the schema's basic string type and default value, helping the agent construct valid inputs. However, it also mentions 'ctx' which is not in the schema, slightly muddying the parameter list.

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?

The description clearly states 'Get API usage statistics' with a specific verb and resource. It is distinct from sibling tools like get_accounts, get_records, etc., which focus on other data domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There are no exclusions, prerequisites, or alternative tool suggestions. The description simply states what the tool does without contextual usage direction.

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

get_budgetsA

Get all budgets with their limits, spent amounts, and periods.

Args: ctx: MCP context limit: Items per page (1-100, default 30) offset: Items to skip budget_id: Filter by exact budget ID name: Filter by budget name (use prefix: eq., contains., contains-i.) currency_code: Filter by currency (e.g. UAH, USD) created_at: Filter by creation date (e.g. "gte.2025-01-01") updated_at: Filter by last update date (e.g. "gte.2025-01-01")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo
budget_idNo
created_atNo
updated_atNo
currency_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the data returned (limits, spent amounts, periods) and explains pagination via 'limit' and 'offset' parameters. However, it does not explicitly state that the operation is read-only, nor does it describe default sorting, authentication requirements, or any side effects. The 'Get' verb implies safety, but the description lacks depth beyond that.

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?

The description is efficiently structured: a one-line summary followed by a compact parameter list. Every line provides necessary information without redundancy. The 'Args:' block is clearly organized and scannable, making it easy for an agent to parse.

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

Completeness4/5

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

For a list tool with an output schema and optional filters, the description is nearly complete. It explains the tool's purpose, return content, and all filter parameters. Minor gaps include lack of default sorting order and mention of how filters combine, but the presence of an output schema reduces the need to describe return values. Overall, it provides enough context for correct invocation.

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

Parameters4/5

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

The schema has 0% coverage, so the description must compensate. It does so effectively by explaining each of the 7 parameters with filter semantics, including prefix operators for 'name' (eq., contains., contains-i.) and date filtering examples for 'created_at' and 'updated_at'. This adds significant meaning beyond the schema's type/default information. It would be a 5 if it covered all possible filter operators, but it gives enough examples to be highly useful.

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?

The description clearly states 'Get all budgets with their limits, spent amounts, and periods.' This is a specific verb + resource combination that unambiguously identifies the tool's function and distinguishes it from sibling tools like get_accounts or get_categories. The added detail about what data is returned solidifies the purpose.

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 implies usage through the phrase 'Get all budgets' and the filter parameters, but it does not explicitly state when to use this tool versus alternatives or provide any exclusions. For example, there is no guidance on when to use get_budgets instead of other listing tools. This makes the usage context implied rather than explicit.

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

get_categoriesA

Get spending/income categories.

Categories are organized hierarchically (parent -> children). Use category IDs to filter records by category.

Args: ctx: MCP context limit: Items per page (1-100, default 50) offset: Items to skip category_id: Filter by exact category ID name: Filter by name (use prefix: contains-i.food) created_at: Filter by creation date (e.g. "gte.2025-01-01") updated_at: Filter by last update date (e.g. "gte.2025-01-01")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo
created_atNo
updated_atNo
category_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains pagination parameters and filter semantics (e.g., prefix matching, date operators) and mentions the hierarchical structure, but it does not explicitly state that it is a read-only operation or describe what happens on empty results. This is adequate but not rich.

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?

The description is well-structured: a one-line purpose, a brief note on hierarchy, usage context, and a concise Args block. Every sentence adds necessary information, and the format is easy to scan.

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

Completeness4/5

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

Given the existence of an output schema, the description need not detail return values. It covers filtering, pagination, and hierarchical relationships, which is sufficient for a list/filter tool. It could mention sorting or error behavior, but overall it is quite complete.

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 description coverage is 0%, so the description must compensate. It does so thoroughly: each parameter gets a meaningful explanation beyond the raw schema, including ranges (limit 1-100), defaults, filter semantics, and examples for date filters. This adds substantial value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get spending/income categories' with a specific verb and resource, clearly distinguishing it from sibling tools that handle accounts, records, budgets, etc. However, it does not explicitly contrast with alternatives, so it stops short of a perfect score.

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?

The description notes that categories are hierarchical and advises using category IDs to filter records by category, which gives practical context for when to use this tool. It does not explicitly mention when not to use it or name alternative tools, but the guidance is clear enough for typical usage.

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

get_goalsA

Get all savings goals with current/target amounts and deadlines.

Args: ctx: MCP context limit: Items per page (1-100, default 30) offset: Items to skip goal_id: Filter by exact goal ID name: Filter by goal name (use prefix: eq., contains., contains-i.) note: Filter by note text (use prefix: contains-i.vacation) created_at: Filter by creation date (e.g. "gte.2025-01-01") updated_at: Filter by last update date (e.g. "gte.2025-01-01")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
noteNo
limitNo
offsetNo
goal_idNo
created_atNo
updated_atNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description bears the full burden of behavioral disclosure. It implies a read-only operation ('Get all') and describes available filters, but it does not explicitly state that no data is modified, mention authentication limits, or describe pagination edge cases. The detail about 'current/target amounts and deadlines' adds some context beyond the tool name.

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?

The description is concise: a single front-loaded sentence followed by a structured Args list. The list is easy to scan and adds necessary detail. The inclusion of 'ctx' as a parameter (not present in the schema) and the slightly cryptic note example are minor inefficiencies, but overall the description earns its place.

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

Completeness4/5

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

The tool has an output schema, so return values are covered elsewhere. The description explains the resource, key fields, pagination, and filtering options. It does not mention any side effects or authorization requirements, but for a read/filter tool with no annotations, this is reasonably complete. Minor gaps include not addressing edge cases like empty results or combined filters.

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

Parameters4/5

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

The schema description coverage is 0%, so the description must compensate. It does so well by explaining each parameter's purpose, including filter syntax examples like 'gte.2025-01-01' and prefix modifiers (eq., contains., contains-i.). However, it lists 'ctx' which is not in the schema, and the note example 'contains-i.vacation' is somewhat unclear, preventing a perfect score.

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?

The description clearly states 'Get all savings goals with current/target amounts and deadlines', which specifies the verb (get), resource (savings goals), and the key data fields. This distinguishes it from sibling tools like get_budgets or get_categories, which target different financial entities.

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 implies usage for retrieving savings goals and explains pagination and filter options, but it does not explicitly contrast with sibling tools or state when not to use this tool. Its context is clear but lacks exclusionary guidance, so it sits at a mid-level score.

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

get_labelsA

Get custom labels (tags) used to organize records.

Args: ctx: MCP context limit: Items per page (1-100, default 50) offset: Items to skip label_id: Filter by exact label ID name: Filter by label name (use prefix: eq., contains., contains-i.) created_at: Filter by creation date (e.g. "gte.2025-01-01") updated_at: Filter by last update date (e.g. "gte.2025-01-01")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo
label_idNo
created_atNo
updated_atNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It does explain filtering operators (e.g., 'prefix: eq., contains., contains-i.') and provides date examples, which adds useful behavioral detail. However, it does not explicitly state read-only status, pagination caveats, or any side effects, leaving some ambiguity for an agent relying solely on this description.

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?

The description is compact and well-structured: a one-sentence purpose followed by a bullet-style Args list. Every line adds value, and the param details are immediately scannable. No fluff or repetition of schema defaults.

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

Completeness4/5

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

Given that an output schema is present, the description need not explain return values. It covers filtering, pagination, and parameter semantics thoroughly. However, it omits any mention of default sort order or how results are ordered, which would be useful for a list endpoint. Overall, it is complete enough for effective invocation.

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 description coverage is 0%, but the description fully compensates by documenting every parameter with meaning and examples. It explains the filter syntax for 'name', the date format for 'created_at'/'updated_at', and pagination semantics for 'limit'/'offset'. This is far more helpful than the bare schema properties.

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?

The description opens with 'Get custom labels (tags) used to organize records,' which is a specific verb+resource pair that clearly differentiates this tool from sibling tools like get_records or get_categories. The term 'custom labels' is unambiguous and immediately conveys the tool's scope.

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 clearly implies when to use the tool (when you need to fetch labels/tags) but does not provide explicit when-not-to-use guidance or mention alternative tools. Since all sibling tools are list/retrieval operations, the unique focus on labels provides implicit context, but exclusions are absent.

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

get_record_rulesA

Get auto-categorization rules for records.

These rules automatically assign categories/labels to matching transactions.

Args: ctx: MCP context limit: Items per page (1-100, default 30) offset: Items to skip rule_id: Filter by exact rule ID name: Filter by rule name (use prefix: eq., contains., contains-i.) created_at: Filter by creation date (e.g. "gte.2025-01-01") updated_at: Filter by last update date (e.g. "gte.2025-01-01")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo
rule_idNo
created_atNo
updated_atNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses pagination parameters (limit/offset) and filter syntax, which is useful. However, it doesn't mention sorting, combination rules, or other operational behaviors beyond basic parameter ranges.

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?

The description is front-loaded with a clear purpose, followed by a structured Args list where every line adds value. It's a bit lengthy but not wasteful; no unnecessary filler.

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

Completeness4/5

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

For a 6-parameter read-only list tool, the description covers parameter semantics, pagination, and filtering well. The output schema exists to describe return shape, so not explaining it is fine. Minor gaps like sorting or filter combination rules exist, but overall it's sufficient for an agent to select and invoke this tool.

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?

The input schema has zero descriptions, but the tool description compensates fully. It explains limit range/default, offset semantics, rule_id exact matching, name filter prefixes (eq., contains., contains-i.), and date filter formats with examples—significantly more than the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'gets auto-categorization rules for records' and explains what those rules do. This is a specific verb+resource pairing, though it doesn't explicitly distinguish itself from sibling tools like get_categories or get_labels.

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 implies the tool is used when retrieving auto-categorization rules, but gives no explicit guidance about when to use it versus alternatives, nor any when-not examples. The context is implied rather than spelled out.

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

get_recordsA

Get financial records (transactions) for a specific account.

IMPORTANT: account_id is required. Use get_accounts() first to find it. Max date range is 370 days. If no date filter, returns last 3 months.

Date filter examples:

  • "gte.2025-01-01" — from Jan 1, 2025

  • "gte.2025-01-01,lte.2025-01-31" — January 2025

Amount filter examples:

  • "gte.100" — amount >= 100

  • "gte.100,lte.500" — between 100 and 500

Text filter prefixes: eq., contains., contains-i.

Args: ctx: MCP context account_id: Required. Account ID (use get_accounts to find IDs) record_date: Date range filter with prefix (e.g. "gte.2025-01-01") limit: Items per page (1-100, default 30) offset: Items to skip for pagination category_id: Filter by category ID label_id: Filter by label ID note: Filter by note text (use prefix: contains-i.grocery) payee: Filter expenses by payee (use prefix: contains-i.amazon) payer: Filter income by payer amount: Filter by amount (use prefix: gte.100,lte.500) record_type: Filter by type: income or expense. Transfers are not a separate type — they are identified by transferId/transferAccountId fields in the response sort_by: Sort field and direction (e.g. "recordDate,asc" or "amount,desc") created_at: Filter by creation date (e.g. "gte.2025-01-01") updated_at: Filter by last update date (e.g. "gte.2025-01-01")

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
limitNo
payeeNo
payerNo
amountNo
offsetNo
sort_byNo
label_idNo
account_idYes
created_atNo
updated_atNo
category_idNo
record_dateNo
record_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It discloses critical behaviors: max date range 370 days, default 3 months if no date filter, transfer records identified by transferId/transferAccountId, and detailed filter syntax. This goes far beyond a basic description.

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?

The description is well-structured and front-loaded with the most critical info (required account_id, date limits), but it has some redundancy: filter examples are given in a dedicated section and then repeated in the args list. While this improves self-containedness, it slightly hurts conciseness.

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?

Given the tool's complexity (14 params, no annotations, output schema present), the description provides comprehensive context: required parameters, default pagination, filter formats, and transfer behavior. It is sufficient for an agent to select and invoke correctly.

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 description coverage is 0%, so the description fully compensates. Every parameter (14 total) is listed with examples and explanations (e.g., 'note: Filter by note text (use prefix: contains-i.grocery)' and 'amount: Filter by amount (use prefix: gte.100,lte.500)'). This adds substantial meaning beyond the raw schema.

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?

The description clearly states 'Get financial records (transactions) for a specific account.' This is a specific verb+resource with scope, and it distinguishes from siblings like get_records_by_id (single record) and get_accounts (accounts).

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?

It explicitly says 'account_id is required. Use get_accounts() first to find it,' providing a prerequisite and directing to a sibling tool. It also clarifies default behavior (last 3 months) and max date range. However, it does not explicitly contrast with alternatives like get_records_by_id for single-record retrieval.

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

get_records_by_idA

Get specific records by their IDs (comma-separated, max 30).

Args: ctx: MCP context record_ids: Comma-separated record IDs (e.g. "id1,id2,id3")

ParametersJSON Schema
NameRequiredDescriptionDefault
record_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses input format and the 30-ID limit, but does not specify behavior when some IDs are invalid (e.g., error vs. partial results). For a simple read tool, this is a noticeable gap, though the core behavior is clear.

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?

The description is brief and front-loaded with the main purpose in the first sentence. The 'Args' section is slightly redundant but adds clarity; no wasted words overall.

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

Completeness4/5

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

For a tool with one parameter and an output schema, the description covers the essentials: purpose, parameter format, and limit. It lacks error-handling details, but that is a minor gap for such a simple tool. The output schema handles return value documentation.

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 description coverage is 0%, so the description must compensate. It fully explains the record_ids parameter with format and example ('Comma-separated record IDs (e.g. "id1,id2,id3")') and adds the max 30 constraint, going well beyond the schema.

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?

The description clearly states 'Get specific records by their IDs', which is a specific verb+resource that distinguishes it from siblings like get_records. It also adds detail about comma-separated IDs and a max of 30, making the purpose unambiguous.

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?

The description implies usage when you have specific record IDs, contrasting with get_records which likely retrieves all records. It provides clear context but does not explicitly name alternatives or state when-not-to-use, so a slight deduction.

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

get_standing_ordersA

Get recurring/scheduled payments (standing orders).

Shows planned future transactions: bills, subscriptions, salary, etc.

Args: ctx: MCP context limit: Items per page (1-100, default 30) offset: Items to skip standing_order_id: Filter by exact standing order ID name: Filter by name (use prefix: eq., contains., contains-i.) currency_code: Filter by ISO currency code (e.g. UAH, USD, EUR) created_at: Filter by creation date (e.g. "gte.2025-01-01") updated_at: Filter by last update date (e.g. "gte.2025-01-01")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
offsetNo
created_atNo
updated_atNo
currency_codeNo
standing_order_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only operation via 'Get' and 'Shows', and gives insight into the return type (planned future transactions). However, it does not explicitly state that it is non-destructive, nor does it disclose error handling, permissions, or other side effects.

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?

The description is appropriately sized, starting with a clear one-sentence purpose, then a brief example of what it returns, and a structured Args list. Every sentence earns its place, and the parameter documentation is concise and front-loaded.

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

Completeness4/5

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

The description covers the tool's purpose and all parameters effectively. With an output schema present, return values need no explanation. However, it lacks some details like how filters combine, default ordering, or timezone handling, leaving minor gaps for a 7-parameter tool.

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?

The schema has 0% description coverage, but the description fully compensates by documenting all 7 parameters in the Args section. It provides types, defaults, and concrete examples (e.g., 'name: use prefix: eq., contains., contains-i.', 'created_at: gte.2025-01-01'), adding significant meaning beyond the raw schema.

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?

The description clearly states 'Get recurring/scheduled payments (standing orders)', giving a specific verb and resource. It distinguishes itself from sibling tools by focusing on standing orders, and further clarifies with examples like 'bills, subscriptions, salary'.

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?

The description clearly indicates when to use this tool by explaining it shows planned future transactions (bills, subscriptions, salary). It does not explicitly mention alternatives or when not to use, but the context is clear enough for an agent to decide.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv0.1.0
    • First observedget_accounts
    • First observedget_api_usage
    • First observedget_budgets
    • First observedget_categories
    • First observedget_goals
    • First observedget_labels
    • First observedget_record_rules
    • First observedget_records
    • First observedget_records_by_id
    • First observedget_standing_orders

TDQS

A4.2/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct resource (accounts, records, categories, budgets, goals, labels, standing orders, rules, API usage). The only potential overlap is get_records vs get_records_by_id, but the latter explicitly retrieves by IDs, making the distinction clear.

Naming Consistency5/5

All tools follow the get_<resource> pattern with consistent snake_case. The sole variation, get_records_by_id, still adheres to the overall convention and is predictable.

Tool Count5/5

10 tools is well-scoped for a read-only financial data API, covering all major entities without unnecessary bloat or missing core resources.

Completeness5/5

The tool set provides comprehensive read-only coverage of the budgeting domain: accounts, transactions, categories, budgets, goals, labels, standing orders, rules, and API usage. No obvious gaps exist for querying financial data, and filters allow for detailed retrieval.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for accessing personal finance data from Ogarni.AI, including receipts, categories, summaries, notifications, and more.
    -
  • A
    license
    C
    quality
    C
    maintenance
    Enables querying of BudgetBakers Wallet data including accounts, transactions, categories, and labels through natural language commands.
    8
    17
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Read-only MCP and HTTP proxy server for accessing Monarch Money financial data, enabling transaction analysis, budget tracking, and cashflow insights through natural language.
    6
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for programmatic read-only access to RiseUp cashflow data, allowing AI assistants to retrieve budget information via natural language.
    2
    154
    22
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lapin7771n/wallet-budgetbakers-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server