Skip to main content
Glama
adelaidasofia

finance-mcp

finance-mcp

Local-first personal finance MCP. Aggregates bank, brokerage, credit, and loan accounts via Plaid. Writes balances, holdings, and transactions to your local Obsidian-style markdown vault. Access tokens stay in macOS Keychain. Never sends data anywhere except plaid.com.

What it does

  • Link any US bank or brokerage via Plaid (Chase, Citi, Schwab, Discover, Fidelity, Wells Fargo, Bank of America, Capital One, Vanguard, Robinhood, Coinbase, student-loan servicers, 12,000+ institutions total).

  • Pull live balances for every account → writes the auto-sync block in your vault's Accounts.md.

  • Pull investment holdings with shares, cost basis, current value → writes Investments.md.

  • Pull transactions cursor-style (delta only after first sync) → stores in local SQLite.

  • Roll up monthly cash flow by category → writes Cash Flow.md.

  • Pull liabilities (credit-card APRs, statement balances, student-loan payoff info).

  • Audit log every Plaid call and every keychain access.

Why local-first matters

Most personal-finance SaaS (Mint, Copilot, YNAB, Monarch) puts your bank data on their servers and charges you for the privilege. This MCP:

  • Runs on your laptop, talks directly to Plaid, writes to your local vault.

  • Stores access tokens in macOS Keychain, not env files or any database.

  • Never returns access tokens in tool responses — items are referenced by alias (chase, citi, etc.).

  • Vault data is plain markdown with inline Dataview fields — your data, your format, queryable forever.

Related MCP server: plaid-mcp

Install

Open Claude Code, paste:

/plugin marketplace add adelaidasofia/finance-mcp
/plugin install finance-mcp@finance-mcp

Requires macOS (for Keychain) and Python 3.11+. After install, set your Plaid credentials in .env at the plugin root (see SETUP.md for the Plaid signup walkthrough).

First-time use

> healthcheck

If it shows blockers, follow them. Once green:

> link_start(institution_alias="chase")

Open the returned link_token in Plaid's Link demo page (paste the token in the field labeled "Link Token", then click "Open Plaid Link"). Complete bank auth in the browser. Copy the public_token from the success page.

> link_complete(institution_alias="chase", public_token="public-sandbox-...")

Repeat for each bank.

> sync_balances
> sync_holdings
> sync_transactions
> rollup_month(month="2026-05")

Your vault's Accounts.md, Investments.md, and Cash Flow.md now have auto-sync blocks with current data. Re-run any time.

Tool surface

Tool

What it does

healthcheck

Verify Plaid creds, vault path, keychain access.

link_start(alias)

Start linking a new bank. Returns link_token.

link_complete(alias, public_token)

Exchange public_token, store in Keychain.

list_linked

List linked institutions + last-sync timestamps.

unlink(alias)

Remove an institution. Revokes Plaid item + deletes Keychain entry.

sync_balances([alias])

Pull current balances → Accounts.md.

sync_holdings([alias])

Pull investment positions → Investments.md.

sync_transactions([alias])

Cursor-based transaction sync → SQLite.

sync_liabilities([alias])

Pull credit + loan details.

sync_all([alias])

All of the above in sequence.

rollup_month(month)

Compute monthly income/expense rollup → Cash Flow.md.

audit_tail(n)

Last N audit-log entries.

Security model

  • Plaid access_token lives in macOS Keychain (security CLI), service name finance-mcp, account name = your institution alias.

  • Plaid client_id + secret live in .env (chmod 600). Never committed (in .gitignore).

  • Transaction history lives in SQLite at ~/.claude/finance-mcp/data.db (not in your vault).

  • Vault writes only happen inside the configured FINANCE_MCP_FINANCE_FOLDER. Set to empty string to disable vault writes entirely.

  • Audit log records every Plaid call and every keychain operation.

  • Tool responses never include raw access tokens.

Plaid environments

  • sandbox (default): fake banks, fake credentials (user_good / pass_good). Free forever. Use this first.

  • development: real banks, free up to 100 items per Plaid account. Use this for personal accounts.

  • production: real banks at scale. Requires a Plaid application + paid plan.

Set via PLAID_ENV in .env. Switch by re-linking all institutions (tokens are environment-bound).

Companion MCPs

  • jkoelker/schwab-mcp — Direct Charles Schwab Trader API for options, trade placement, and deep position data beyond what Plaid exposes.

  • tomasgesino/schwab-mcp — Schwab wheel-strategy management with dry-run-default trading.

finance-mcp covers Schwab basic balances and holdings via Plaid; the above are the route for Schwab power-user features.

Telemetry

This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.

What is sent:

  • Plugin name (e.g. slack-mcp)

  • Plugin version (e.g. 0.1.0)

What is NOT sent:

  • No user identifiers, names, emails, tokens, or API keys

  • No file paths, message content, or anything from your work

  • No IP address is stored after dedup processing

Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.

Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.

License

MIT. See LICENSE.


For users who can't use the plugin marketplace yet, the manual flow:

git clone https://github.com/adelaidasofia/finance-mcp ~/.claude/finance-mcp
cd ~/.claude/finance-mcp
pip3 install --break-system-packages -r requirements.txt
cp .env.example .env
chmod 600 .env

Then register with Claude Code by adding to your vault's .mcp.json (project scope) or ~/.claude.json (user scope, via claude mcp add):

"finance": {
  "type": "stdio",
  "command": "python3",
  "args": ["-m", "finance_mcp.server"],
  "env": {
    "PYTHONPATH": "/Users/<you>/.claude/finance-mcp",
    "FINANCE_MCP_VAULT_PATH": "/Users/<you>/Documents/MyVault",
    "FINANCE_MCP_FINANCE_FOLDER": "Finance"
  }
}

Restart Claude Code. Tools appear under mcp__finance__*.


Built by Adelaida Diaz-Roa. Full install or team version at diazroa.com.

Available Tools

12 tools
audit_tailA

Return the last N audit-log entries. Every Plaid call and every keychain operation is recorded.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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 mentions that entries cover Plaid calls and keychain operations, but lacks critical info like authorization requirements, rate limits, ordering (most recent first?), or whether entries are system-wide or user-specific. For a read tool, more behavioral context is needed.

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?

Two sentences with no wasted words. The first sentence states the core action, and the second provides context about what is recorded. It is front-loaded and efficient.

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 simple tool with one parameter and an output schema, the description covers the core functionality and scope. Minor omissions like ordering direction or maximum N are acceptable given the tool's simplicity. The output schema handles return value details.

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 input schema has one parameter 'n' with default 50 and 0% description coverage. The description adds meaning by stating 'last N', clarifying that the parameter controls the count and implies recency. This adequately compensates for the lack of schema descriptions.

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 'Return the last N audit-log entries', which is a specific verb and resource. It distinguishes the tool from all sibling tools, which are focused on syncing, linking, or health checks, not auditing.

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 when the audit log is needed, but provides no explicit guidance on when to use this tool versus alternatives or prerequisites. Given the sibling tools are unrelated, the usage context is clear but not explicitly stated.

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

healthcheckA

Verify the MCP's runtime config: Plaid creds, vault path, finance folder, keychain access, SQLite state. Returns a green/yellow/red summary with explicit blockers if any.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/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 full burden for behavioral disclosure. It transparently describes the output format (green/yellow/red summary with blockers) and implies it is a read-only verification with no 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 concise: two sentences that efficiently convey the tool's purpose and output. Every sentence adds value without verbosity.

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 has no parameters and an output schema exists, the description adequately covers what the tool verifies and what the response looks like. No missing context for effective use.

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 tool has no parameters, so schema coverage is 100% by default. The description does not need to add parameter meaning, and it does not repeat any trivial info. Baseline 4 is appropriate.

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 the tool's purpose: verifying multiple runtime config items (Plaid creds, vault path, etc.). It uses a specific verb 'Verify' and resource 'MCP's runtime config', which distinguishes it from sibling sync/link tools.

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 implicitly guides usage by specifying what the tool checks, but it does not explicitly state when to use this tool versus alternatives. However, given that siblings are sync/link operations, the healthcheck's focus on config verification is distinct enough.

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

list_linkedA

List all linked institutions with their last-sync timestamps and keychain status. Does NOT return any access tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, so description fully bears behavioral disclosure. It explicitly states what it returns (institutions with timestamps and keychain status) and importantly excludes access tokens, a critical behavioral constraint.

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?

Two sentences conveying purpose and a critical exclusion. Front-loaded with action and scope. No wasted words.

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?

Output schema exists to detail return values. Description covers purpose and key exclusion. Complete for a simple list tool.

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?

No parameters exist, so schema coverage is 100%. Description doesn't need to add parameter info; baseline 4 is appropriate.

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 it lists all linked institutions with specific fields (last-sync timestamps, keychain status) and explicitly distinguishes from siblings by noting it does NOT return access tokens.

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 for checking linked institutions and their sync status, but doesn't explicitly state when to use vs alternatives. However, given no parameters and distinct purpose, it's adequate.

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

rollup_monthB

Compute income / expense / by-category totals for a given YYYY-MM from the SQLite transaction store, then write the auto-sync block in Cash Flow.md.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesFormat YYYY-MM (e.g. "2026-05").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

No annotations exist, so description must disclose behavioral traits. It mentions reading from SQLite and writing to a file, but lacks details on side effects, idempotency, or auth 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?

Two sentences, concise, no fluff. Could be slightly more front-loaded but still effective.

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?

With an output schema present, description needn't detail return values. It covers the main actions and gives enough context for basic understanding. However, could elaborate on the auto-sync block.

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

Parameters3/5

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

Single parameter 'month' with schema description. Description adds minimal extra meaning beyond the schema (both mention YYYY-MM format). Schema coverage is 100%, so baseline 3 applies.

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 computes income/expense/by-category totals for a given month and writes to Cash Flow.md. However, it does not distinguish from sibling tools like sync_transactions or sync_all.

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 on when to use this tool versus alternatives. No prerequisites or context for usage provided.

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

sync_allB

Convenience: balances + holdings + liabilities + transactions in sequence. Use this for daily / on-demand full refresh.

ParametersJSON Schema
NameRequiredDescriptionDefault
institution_aliasNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. It mentions sequence but does not disclose side effects, authentication needs, or whether operations are destructive. For a multi-sync tool, more transparency is needed.

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?

Two sentences, front-loaded with purpose, zero filler. The second sentence adds valuable usage guidance. Every word earns its place.

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

Completeness2/5

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

Given the tool runs multiple syncs, the description lacks details about output format, error handling, or side effects. An output schema exists but is not described, leaving the agent without a complete picture of the tool's behavior.

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

Parameters1/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 explain the 'institution_alias' parameter. It does not mention it at all, leaving the parameter's purpose and usage entirely undocumented.

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 it is a convenience tool that syncs balances, holdings, liabilities, and transactions in sequence. It names the specific resources and distinguishes it from siblings that sync individual types.

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?

Explicitly says 'Use this for daily / on-demand full refresh,' which tells when to use. It lists components, implying alternatives for individual syncs, but does not explicitly state when not to use or mention alternative tools.

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

sync_balancesA

Pull current balances for all linked institutions (or one specific alias) and write the auto-sync block in Accounts.md.

ParametersJSON Schema
NameRequiredDescriptionDefault
institution_aliasNoPass empty string to sync ALL linked institutions. Otherwise sync just the named one.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/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 mentions writing to Accounts.md, which is a behavioral trait, but does not disclose whether the write is destructive or additive, or what happens if the institution alias is invalid. Additional context on side effects would improve transparency.

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 a single sentence that is front-loaded with key information. It is concise and contains no unnecessary words, though it could be slightly clearer about the auto-sync block.

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 low complexity (one optional parameter, no required, output schema exists), the description adequately covers what the tool does. It distinguishes from siblings and mentions the output file, though it could explicitly note prerequisites like linked institutions.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter. The tool description reiterates the parameter behavior but does not add meaning beyond what the schema already provides. Baseline 3 applies.

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 the verb 'pull' and the resource 'current balances for all linked institutions (or one specific alias)', and specifies the action 'write the auto-sync block in Accounts.md'. This distinguishes it from sibling tools like sync_transactions and sync_liabilities.

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 syncing balances, but does not explicitly state when to use this tool over alternatives like sync_all or when not to use it. No comparisons or exclusions are provided.

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

sync_holdingsA

Pull investment holdings (stocks, ETFs, mutual funds, bonds) and write the auto-sync block in Investments.md.

Skipped silently for institutions that don't support the Plaid investments product (most checking-only banks).

ParametersJSON Schema
NameRequiredDescriptionDefault
institution_aliasNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description discloses two behavioral traits: writing to a file (side effect) and silent skipping for unsupported institutions. This adds value beyond what annotations would provide.

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?

Two sentences, no fluff. The first sentence front-loads the primary action and result; the second adds an important constraint. Every word earns its place.

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 param, output schema exists), the description covers the main action and side effect but omits parameter explanation. The output schema likely covers return format, but ambiguity remains about the parameter's effect.

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

Parameters2/5

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

The sole parameter 'institution_alias' is not mentioned in the description, and schema coverage is 0%. The description does not explain how this parameter affects behavior, leaving the agent to guess its role.

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 the verb 'Pull' and the resource 'investment holdings' with specific asset types (stocks, ETFs, etc.). It also names the output action ('write the auto-sync block in Investments.md'). This distinguishes it from sibling tools like sync_transactions and sync_liabilities.

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 provides a useful caveat about institutions without Plaid investments support, but lacks explicit guidance on when to use this tool versus alternatives like sync_all or sync_balances. No 'use X instead' or prerequisites are mentioned.

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

sync_liabilitiesA

Pull credit-card APRs, minimums, statement balances, and student-loan payoff info. Skipped silently for institutions that don't support the Plaid liabilities product.

ParametersJSON Schema
NameRequiredDescriptionDefault
institution_aliasNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description discloses key behavior (silent skip for unsupported institutions) but lacks details on idempotency, error handling, or authentication requirements.

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?

Two sentences, no wasted words. Front-loaded with the core purpose, then a brief edge-case note.

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?

Output schema exists so return values are covered. However, the parameter is undocumented, and behavioral details are minimal. Adequate but has a clear gap.

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

Parameters1/5

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

The single parameter institution_alias has 0% schema coverage and is not mentioned in the description. The description fails to add any meaning 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 it pulls liability-specific data (APRs, minimums, balances, student-loan payoff) and distinguishes from siblings like sync_transactions or sync_balances by specifying the data domain.

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 explains silent skipping for unsupported institutions, implying when to use. It could explicitly mention alternatives like sync_balances for balance data, but the context is clear.

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

sync_transactionsA

Cursor-based transaction sync. First run pulls historical; subsequent runs pull only the delta. Stores raw transactions in SQLite. Use rollup_month to write the Cash Flow.md monthly summary afterward.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoInitial-pull window hint (Plaid honors its own default).
institution_aliasNoEmpty string syncs all. Otherwise one specific bank.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Since no annotations are provided, the description carries full burden. It discloses the cursor-based approach, delta-only incremental sync, SQLite storage, and hints about the 'days' parameter behavior. No contradictions.

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?

Three concise sentences, each serving a distinct purpose: defining the tool, explaining its behavior, and guiding on subsequent use. No wasted words.

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 sync tool with output schema, the description adequately covers behavior, storage, parameter hints, and follow-up. Missing discussion on error states or rate limits, but these are not critical for basic usage.

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?

Input schema has 100% coverage, but the description adds meaningful context: 'days' is an 'Initial-pull window hint (Plaid honors its own default)' and 'institution_alias' empty string syncs all. This enhances understanding beyond 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?

Description clearly states 'Cursor-based transaction sync', 'First run pulls historical; subsequent runs pull only the delta', and 'Stores raw transactions in SQLite'. It effectively communicates the tool's purpose and distinguishes it from siblings like sync_liabilities or sync_balances.

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 provides a clear next-step recommendation ('Use rollup_month to write the Cash Flow.md monthly summary afterward'). However, it does not explicitly state when to avoid this tool or compare it to alternatives like sync_all or sync_holdings.

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. 12 tool updatesv0.1.0
    • First observedaudit_tail
    • First observedhealthcheck
    • First observedlink_complete
    • First observedlink_start
    • First observedlist_linked
    • First observedrollup_month
    • First observedsync_all
    • First observedsync_balances
    • First observedsync_holdings
    • First observedsync_liabilities
    • First observedsync_transactions
    • First observedunlink

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: sync operations for different data types, monthly rollups, institution linking, health checks, audit logs, and unlink. No overlap or ambiguity.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern (e.g., sync_transactions, rollup_month, link_start). Even single-word names like healthcheck fit the pattern (verb as noun). No mixing of conventions.

Tool Count5/5

12 tools is well-scoped for a finance management server covering syncing, monthly rollups, institution linking, healthchecks, and audit logs. Each tool earns its place without redundancy.

Completeness4/5

The set covers core lifecycle: link, sync (transactions, balances, holdings, liabilities), rollup, unlink, healthcheck, audit. Minor gaps: no tool for manual transaction editing or single-institution transaction sync, but the domain is well-covered overall.

Maintenance

ActivityActive
ResponsivenessUnresponsive

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

  • A
    license
    A
    quality
    C
    maintenance
    Self-hosted, read-only MCP server that connects banks, credit cards, loans, and brokerage accounts via Plaid. 9 tools for balances, transactions, recurring charges, liabilities, and investment holdings.
    9
    7
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A read-only MCP server that enables users to analyze their real bank, credit card, loan, and brokerage data through Plaid. It provides financial analysis tools for transactions, balances, investments, liabilities, and debt while keeping all access tokens and data locally stored.
    24
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    open-source personal finance app with a first-party MCP server. 91 HTTP tools (OAuth 2.1 + DCR) and 87 stdio tools cover transactions, budgets, accounts, portfolio analytics, FX conversion, loans, subscriptions, goals, importers, and rules. Users self-host with Docker + PostgreSQL or use the managed cloud
    89
    13
    AGPL 3.0
  • A
    license
    A
    quality
    B
    maintenance
    Local-first crypto portfolio aggregation across exchanges (Bybit, Binance), EVM and Solana wallets, and Polymarket. Read-only credentials, runs as a local MCP server. Data aggregation only, not financial advice.
    15
    47
    5
    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/adelaidasofia/finance-mcp'

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