Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.
Warning

Malware flagged

A supply-chain scanner flagged a high-severity malware risk in this package. Treat it as unsafe to install until the finding is cleared. See Supply Chain Security in the trust breakdown.

Copilot Money

NPM · COPILOT-MONEY-MCP · SCANNED SEP 20

Query and manage Copilot Money personal finances — local reads, opt-in GraphQL writes.

Available components

0 this week 79 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security53
  • Malware check failed: a supply-chain vendor flagged a high-severity malware risk. See how to fix → Fail
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 39 of 109 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to ignaciohermosillacornejo/copilot-money-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 63 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2885 tokens (~206/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
  • Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the Copilot Money MCP server?

Copilot Money runs locally as an npm package, launched with npx -y copilot-money-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · copilot-money-mcp

# add to Claude Code
claude mcp add ignaciohermosillacornejo-copilot-money-mcp -- npx -y copilot-money-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "ignaciohermosillacornejo-copilot-money-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "copilot-money-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "ignaciohermosillacornejo-copilot-money-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "copilot-money-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add ignaciohermosillacornejo-copilot-money-mcp -- npx -y copilot-money-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ignaciohermosillacornejo-copilot-money-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "copilot-money-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ignaciohermosillacornejo-copilot-money-mcp --command npx --arg -y --arg copilot-money-mcp
# ~/.hermes/config.yaml
mcp_servers:
  ignaciohermosillacornejo-copilot-money-mcp:
    command: "npx"
    args: ["-y", "copilot-money-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "ignaciohermosillacornejo-copilot-money-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "copilot-money-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add ignaciohermosillacornejo-copilot-money-mcp -t stdio -c npx -a -y copilot-money-mcp
// mcp.json
{
  "mcpServers": {
    "ignaciohermosillacornejo-copilot-money-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "copilot-money-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 15 Sept 26 0
    • Stability: 0.97 → pass security
  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1
    • Security disclosure: unverified → pass functional
  • 12 Sept 26 0
    • Security disclosure: pass → unverified functional
  • 10 Sept 26 +1
    • Security disclosure: unverified → pass functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/copilot-money-mcp@2.3.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo ignaciohermosillacornejo/copilot-money-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/ignaciohermosillacornejo/copilot-money-mcp/.github/workflows/npm-publish.yml@refs/heads/main
Rekor log index 2195389325
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:d5aa532180c368c157c0d67ebf26cafa42e0e03b5a7e2e5ca31c6b8102dca1996cf7fa63e89e736c29aca0e8f074c78c5d155b5da11d61694a0e410e5

Background: How many MCP packages publish verified provenance →

Dependencies 109 packages
Packages resolved 109
Stale 39
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 14 exposed · ~2,885 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
get_accounts ~146

Get all accounts with balances, plus summary fields: total_balance (net worth = assets minus liabilities), total_assets, and total_liabilities. Optionally filter by account type (checking, savings, credit, investment). Checks both account_type and subtype fields for better filtering (e.g., finds checking accounts even when account_type is 'depository'). By default, hidden accounts are excluded.

NameTypeReqDescription
account_typestringFilter by account type (checking, savings, credit, loan, investment, depository). Note: summary totals (total_assets, total_liabilities, total_balance) reflect only the filtered subset.
include_hiddenbooleanInclude hidden accounts (default: false)

No output schema declared.

No examples provided.

get_balance_history ~217

Get daily balance snapshots for accounts over time. Each entry returns current_balance, available_balance, limit, account_id, and account_name. The response also includes an `accounts` array listing the distinct account IDs in the paginated page. Requires a granularity parameter (daily, weekly, monthly) to control response size. Weekly and monthly modes downsample by keeping the last data point per period. Filter by account_id and date range.

NameTypeReqDescription
account_idstringFilter by account ID
end_datestringEnd date (YYYY-MM-DD)
granularitystringyesRequired. Controls response density: daily (every day), weekly (one per week), or monthly (one per month). Use weekly or monthly for longer time ranges.
limitintegerMaximum number of results (default: 100, max: 10000)
offsetintegerNumber of results to skip for pagination (default: 0)
start_datestringStart date (YYYY-MM-DD)

No output schema declared.

No examples provided.

get_budgets ~99

Get budgets from Copilot's native budget tracking. Returns the current-month effective budget per category plus the full `amounts` map of per-month overrides for history lookups. For parent categories, the returned `amount` is the resolved total (children + rollovers) that Copilot displays in the Budgets view. Totals use the current-month effective amount.

NameTypeReqDescription
active_onlybooleanOnly return active budgets (default: false)

No output schema declared.

No examples provided.

get_cache_info ~86

Get information about the local data cache, including the date range of cached transactions and total count. Useful for understanding data availability before running historical queries. This tool reads from a local cache that may not contain your complete transaction history. Also reports decode_health: per-collection counts of documents dropped on schema validation failure (a "degraded" status means some cached documents are missing from results).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_categories ~238

Unified category retrieval tool. Supports multiple views: list (default) - user categories with transaction counts/amounts for a time period; tree - user categories as hierarchical tree; search - search user categories by keyword. Use parent_id to get subcategories. For list view, use period (e.g., "this_month") or start_date/end_date to filter by date. Includes all categories, even those with $0 spent (matching UI behavior).

NameTypeReqDescription
end_datestringEnd date for list view (YYYY-MM-DD format)
parent_idstringGet subcategories of this parent category ID
periodstringTime period for list view (e.g., 'this_month', 'last_month', 'last_30_days', 'this_year'). Takes precedence over start_date/end_date if provided.
querystringSearch query (required for 'search' view)
start_datestringStart date for list view (YYYY-MM-DD format)
viewstringView mode: list (categories with spend totals), tree (parent/child hierarchy), search (find by keyword)

No output schema declared.

No examples provided.

get_connection_status ~123

Get connection status for all linked financial institutions. Shows per-institution sync health including last successful update timestamps for transactions and investments, login requirements, and error states. Use this to check when accounts were last synced or to identify connections needing attention. Also reports decode_health: per-collection counts of cached documents dropped on schema validation failure (a "degraded" status means some documents are missing from results). Also reports scheduled_smoke: the last scheduled API-drift check (pass / fail / auth-missing with timestamp), or null if the weekly job is not installed.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_goal_history ~171

Get monthly progress snapshots for financial goals. Returns current_amount, target_amount, daily data points, and contribution records per month. Filter by goal_id or month range (YYYY-MM). Cache-only: no live-mode (`--live-reads`) counterpart exists because Copilot's GraphQL endpoint does not expose goal data, so this tool always returns cached LevelDB data regardless of the `--live-reads` flag.

NameTypeReqDescription
end_monthstringEnd month (YYYY-MM)
goal_idstringFilter by goal ID
limitintegerMaximum number of results (default: 100, max: 10000)
offsetintegerNumber of results to skip for pagination (default: 0)
start_monthstringStart month (YYYY-MM)

No output schema declared.

No examples provided.

get_goals ~128

Get financial goals from Copilot's native goal tracking. Retrieves user-defined savings goals, debt payoff targets, and investment goals. Returns goal details including target amounts, monthly contributions, status (active/paused), start dates, and tracking configuration. Calculates total target amount across all goals. Cache-only: no live-mode (`--live-reads`) counterpart exists because Copilot's GraphQL endpoint does not expose goal data, so this tool always returns cached LevelDB data regardless of the `--live-reads` flag.

NameTypeReqDescription
active_onlybooleanOnly return active goals (default: false)

No output schema declared.

No examples provided.

get_holdings ~171

Get current investment holdings with position-level detail. Returns ticker, name, quantity, current price, equity value, average cost, and total return per holding. Joins data from account holdings, securities, and optionally historical snapshots. Filter by account or ticker symbol. Note: cost_basis may be unavailable for cash-equivalent positions.

NameTypeReqDescription
account_idstringFilter by investment account ID
include_historybooleanInclude monthly price/quantity snapshots per holding (default: false)
limitintegerMaximum number of results (default: 100, max: 10000)
offsetintegerNumber of results to skip for pagination (default: 0)
ticker_symbolstringFilter by ticker symbol (e.g., "AAPL", "SCHX")

No output schema declared.

No examples provided.

get_investment_prices ~190

Get investment price history for portfolio tracking. Returns daily and high-frequency price data for stocks, ETFs, mutual funds, and crypto. Filter by ticker symbol, date range, or price type (daily/hf). Includes OHLCV data when available.

NameTypeReqDescription
end_datestringEnd date (YYYY-MM-DD or YYYY-MM)
limitintegerMaximum number of results (default: 100, max: 10000)
offsetintegerNumber of results to skip for pagination (default: 0)
price_typestringFilter by price type: daily (monthly aggregates) or hf (high-frequency intraday)
start_datestringStart date (YYYY-MM-DD or YYYY-MM)
ticker_symbolstringFilter by ticker symbol (e.g., "AAPL", "BTC-USD", "VTSAX")

No output schema declared.

No examples provided.

get_investment_splits ~284

Get stock split events from the local Firestore cache. Returns one row per (security, effective_date) with the adjustment multiplier (e.g. 0.1 for a 10-for-1 split — multiply pre-split prices/quantities by this value to convert to the post-split equivalent). Joined with the securities collection so each row includes ticker and name. IMPORTANT: prices returned by `get_investment_prices` and `get_investment_prices_live` are ALREADY split-adjusted by Copilot. Use this tool only when you need the split events themselves (e.g., for narrative or historical-analysis purposes) — you do NOT need to apply these multipliers to the prices yourself. Securities that have never split are not included in the output. Coverage is limited to securities Copilot currently syncs in your local cache (typically currently-held or recently-held).

NameTypeReqDescription
end_datestringOptional. Inclusive upper bound on effective_date (YYYY-MM-DD).
limitintegerMaximum number of rows. Default 100, max 10000.
offsetintegerPagination offset, default 0.
start_datestringOptional. Inclusive lower bound on effective_date (YYYY-MM-DD).
ticker_symbolstringOptional. Case-insensitive ticker filter (e.g. "NVDA").

No output schema declared.

No examples provided.

get_recurring_transactions ~295

Identify recurring/subscription charges. Combines two data sources: (1) Pattern analysis - finds transactions from same merchant with similar amounts, returns estimated frequency, confidence score, and next expected date. (2) Copilot's native subscription tracking - returns user-confirmed subscriptions stored in the app. Both sources are included by default for comprehensive coverage.

NameTypeReqDescription
end_datestringEnd date (YYYY-MM-DD)
include_copilot_subscriptionsbooleanInclude Copilot's native subscription tracking data (default: true). Returns copilot_subscriptions array with user-confirmed subscriptions.
min_occurrencesintegerMinimum number of occurrences to qualify as recurring (default: 2)
namestringFilter by name (case-insensitive partial match). When filtering, returns detailed view with additional fields like min_amount, max_amount, match_string, account info, and transaction history.
periodstringPeriod to analyze (default: last_90_days). Options: this_month, last_month, last_7_days, last_30_days, last_90_days, ytd, this_year, last_year
recurring_idstringFilter by exact recurring ID. When filtering, returns detailed view with additional fields like min_amount, max_amount, match_string, account info, and transaction history.
start_datestringStart date (YYYY-MM-DD)

No output schema declared.

No examples provided.

get_transactions ~666

Reads from the local LevelDB cache, which may lag behind Copilot's server if the macOS app hasn't synced recently. For real-time data use --live-reads with `get_transactions_live`. Unified transaction retrieval tool. Supports multiple modes: (1) Filter-based: Use period, date range, category, merchant, amount filters. (2) Single lookup: Provide transaction_id to get one transaction. (3) Text search: Use query for free-text merchant search. (4) Special types: Use transaction_type for foreign, refunds, credits, duplicates, hsa_eligible, tagged. (5) Location-based: Use city or lat/lon with radius_km. (6) Tag filter: Use tag to find transactions with a specific tag. Returns human-readable category names and normalized merchant names.

NameTypeReqDescription
account_idstringFilter by account ID
categorystringFilter by category (case-insensitive substring)
citystringFilter by city name (partial match)
countrystringFilter by country code (e.g., US, CL)
end_datestringEnd date (YYYY-MM-DD)
exclude_deletedbooleanExclude deleted transactions marked by Plaid (default: true)
exclude_excludedbooleanExclude user-excluded transactions (default: true)
exclude_split_parentsbooleanExclude split-transaction parents (docs with children_transaction_ids). The children already carry the real categorized amounts — returning the parent would double-count the spend. Default: true.
exclude_transfersbooleanExclude transfers between accounts and credit card payments (default: true)
latnumberLatitude for proximity search (use with lon and radius_km)
limitintegerMaximum number of results (default: 100)
lonnumberLongitude for proximity search (use with lat and radius_km)
max_amountnumberMaximum transaction amount
merchantstringFilter by merchant name (case-insensitive substring)
min_amountnumberMinimum transaction amount
offsetintegerNumber of results to skip for pagination (default: 0)
pendingbooleanFilter by pending status (true for pending only, false for settled only)
periodstringPeriod shorthand: this_month, last_month, last_7_days, last_30_days, last_90_days, ytd, this_year, last_year
querystringFree-text search in merchant/transaction names
radius_kmnumberSearch radius in kilometers (default: 10)
regionstringFilter by region/city (case-insensitive substring)
start_datestringStart date (YYYY-MM-DD)
tagstringFilter by tag name (e.g. "vacation")
transaction_idstringGet a single transaction by ID (ignores other filters)
transaction_typestringFilter by special type: foreign (international), refunds, credits (cashback/rewards), duplicates (potential duplicate transactions), hsa_eligible (medical expenses), tagged (has tags)

No output schema declared.

No examples provided.

refresh_database ~71

Refresh the in-memory cache by reloading data from the local Copilot Money database. Use this when the user has recently synced new transactions in the Copilot Money app, or when you suspect the cached data is stale. The cache also auto-refreshes every 5 minutes. Returns the updated cache info after refresh.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Common questions

What is the Copilot Money MCP server?

Copilot Money is an MCP server listed in the public MCP registry as io.github.ignaciohermosillacornejo/copilot-money-mcp. Query and manage Copilot Money personal finances, local reads, opt-in GraphQL writes. This page covers its npm package (copilot-money-mcp).

Is the Copilot Money MCP server safe to use?

Copilot Money scores 79 out of 100 on VerifyMCP. A supply-chain scanner flagged a possible malware risk on one channel of this server. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Copilot Money MCP server expose?

Copilot Money exposes 14 tools: get_transactions, get_cache_info, refresh_database, get_accounts, get_connection_status, and 9 more. Their descriptions and schemas cost roughly 2,885 tokens of context every time the server is loaded.

Is the Copilot Money MCP server still maintained?

Copilot Money is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Copilot Money MCP server under?

Copilot Money declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.