{"server":{"name":"prism-wallet","version":"0.1.0"},"baseUrl":"https://prism-mcp-677461572521.us-central1.run.app","endpoints":{"mcp":{"method":"POST","path":"/mcp","auth":"Authorization: Bearer mcp_<token>"},"health":{"method":"GET","path":"/health"},"docs":{"method":"GET","path":"/docs"},"docsJson":{"method":"GET","path":"/docs.json"}},"scopes":[{"name":"mcp:read","description":"Default scope. Grants every read tool and every resource. Does not allow mutations."},{"name":"mcp:write","description":"Grants the budget, categorization, and digest write tools in addition to read access."},{"name":"mcp:*","description":"Wildcard — grants all current and future MCP scopes."}],"tools":[{"name":"prism_list_accounts","description":"List all of the user's connected financial accounts (checking, savings, credit, investments, loans), excluding hidden ones, with current balance and metadata.","scopes":["mcp:read"]},{"name":"prism_account_balances","description":"Get a summary of all account balances and the user's total balance across them.","scopes":["mcp:read"]},{"name":"prism_list_transactions","description":"List the user's transactions, optionally filtered by date range, account, category, or merchant. Excludes deleted transactions. Pass dates as ISO strings.","scopes":["mcp:read"]},{"name":"prism_recent_transactions","description":"Get the most recent N transactions (default 20).","scopes":["mcp:read"]},{"name":"prism_search_transactions","description":"Semantic search over the user's transactions using vector embeddings. Use natural language (\"coffee in november\", \"subscriptions over $20\").","scopes":["mcp:read"],"conditional":"Only registered when Pinecone is enabled (config.pineconeEnabled)."},{"name":"prism_spending_by_category","description":"Get total spending broken down by category over a period. Returns the breakdown sorted by amount descending.","scopes":["mcp:read"]},{"name":"prism_get_budget_summary","description":"Get the current month's budget status for every active budget — budgeted, spent, remaining, and percent used per category.","scopes":["mcp:read"]},{"name":"prism_recurring_transactions","description":"List active recurring/subscription charges with cadence and the next expected date, plus an estimated monthly total.","scopes":["mcp:read"]},{"name":"prism_merchant_spending","description":"Total spending at a specific merchant (case-insensitive substring match) over the last N months.","scopes":["mcp:read"]},{"name":"prism_net_worth","description":"Get the user's most recent net worth snapshot and the last N daily snapshots for trend.","scopes":["mcp:read"]},{"name":"prism_list_holdings","description":"List investment holdings (stocks, ETFs, crypto) across all the user's investment accounts.","scopes":["mcp:read"]},{"name":"prism_list_categories","description":"List the category tree the user can assign to transactions and budgets.","scopes":["mcp:read"]},{"name":"prism_dashboard","description":"Financial overview: 10 most recent transactions, net worth summary with month/year deltas, monthly spend/income, and review/onboarding progress.","scopes":["mcp:read"]},{"name":"prism_cash_flow","description":"Current-month cash flow: money in, money out, net cash flow, savings rate, expense ratio, and percentage change vs. previous month.","scopes":["mcp:read"]},{"name":"prism_cash_flow_forecast","description":"Forecast daily balance over the next N days using scheduled recurring charges plus a historical daily average of non-recurring transactions.","scopes":["mcp:read"]},{"name":"prism_monthly_cash_flow","description":"Historical income, expenses, and net cash flow per month for the last N months.","scopes":["mcp:read"]},{"name":"prism_financial_health_score","description":"Composite financial health score (0-100) with per-pillar breakdown (budget adherence, savings rate, debt-to-income, emergency fund, spending consistency, net worth trend) and recommendations.","scopes":["mcp:read"]},{"name":"prism_compare_spending_periods","description":"Compare spending between two periods (named periods or custom date ranges). Returns per-category amounts for each period and the delta.","scopes":["mcp:read"]},{"name":"prism_categorize_transaction","description":"Set a single category on a transaction (replaces any existing splits). Both transaction and category must belong to the authenticated user.","scopes":["mcp:write"]},{"name":"prism_split_transaction","description":"Split a transaction across multiple categories by percentage. Percentages must sum to 100. Replaces any existing splits.","scopes":["mcp:write"]},{"name":"prism_create_budget","description":"Create or upsert a budget for a category. If a budget already exists for that category, it is updated.","scopes":["mcp:write"]},{"name":"prism_update_budget","description":"Update an existing budget by id.","scopes":["mcp:write"]},{"name":"prism_delete_budget","description":"Soft-delete a budget by id.","scopes":["mcp:write"]},{"name":"prism_mark_digest_read","description":"Mark an AI digest as read for the authenticated user.","scopes":["mcp:write"]},{"name":"prism_update_transaction","description":"Update a single transaction's name, merchant, amount, date, category, notes, isTransfer, isExcluded, or reviewed flag.","scopes":["mcp:write"]},{"name":"prism_bulk_update_transactions","description":"Apply the same field updates to many transactions in one call. All transactions must belong to the authenticated user.","scopes":["mcp:write"]},{"name":"prism_set_account_visibility","description":"Show or hide an account from the user's dashboards and aggregates (toggles Account.isHidden).","scopes":["mcp:write"]},{"name":"prism_disconnect_institution","description":"Disconnect a linked institution (Item) — revokes the provider access token where possible and deletes the item along with its accounts, transactions, holdings, and related data.","scopes":["mcp:write"]},{"name":"prism_refresh_institution","description":"Trigger a manual sync for a linked institution. Rate-limited to two refreshes per item per day. Returns the refresh count remaining.","scopes":["mcp:write"]},{"name":"prism_create_category","description":"Create a custom spending or income category scoped to the user.","scopes":["mcp:write"]},{"name":"prism_update_category","description":"Update a user-owned category's name, color, icon, or type. System categories cannot be edited.","scopes":["mcp:write"]},{"name":"prism_delete_category","description":"Soft-delete a user-owned category. System categories cannot be deleted.","scopes":["mcp:write"]},{"name":"prism_create_recurring_transaction","description":"Create a manual recurring transaction (subscription, bill, paycheck, etc.) on a user-owned account and category.","scopes":["mcp:write"]},{"name":"prism_update_recurring_transaction","description":"Update a manual or detected recurring transaction. Marks the record as user-changed so later detection cycles do not overwrite it.","scopes":["mcp:write"]},{"name":"prism_archive_recurring_transaction","description":"Archive a recurring transaction (marks it inactive). Optionally record a reason and note.","scopes":["mcp:write"]}],"resources":[{"slug":"accounts","uri":"prismwallet://accounts","title":"Accounts","description":"All visible financial accounts and current balances."},{"slug":"budgets-current","uri":"prismwallet://budgets/current","title":"Current budgets","description":"Status of every active budget for the current month."},{"slug":"net-worth","uri":"prismwallet://net-worth","title":"Net worth","description":"Latest net worth snapshot and 30-day history."},{"slug":"transactions-recent","uri":"prismwallet://transactions/recent","title":"Recent transactions","description":"The 30 most recent non-excluded transactions."},{"slug":"recurring","uri":"prismwallet://recurring","title":"Recurring transactions","description":"Active subscriptions and recurring charges."},{"slug":"categories","uri":"prismwallet://categories","title":"Categories","description":"The user's category list (system + custom)."}],"howToGetAToken":{"description":"Provision API keys from the Prism Wallet mobile app: open the drawer menu and tap \"API Keys\". The token is shown exactly once — copy it immediately.","steps":["Open the Prism Wallet mobile app.","Open the drawer menu (top-left).","Tap \"API Keys\".","Create a new key, give it a name (e.g. \"Claude Desktop\"), and pick scopes.","Copy the token immediately — it is only shown once."]},"clients":[{"id":"claude-code","label":"Claude Code (CLI)","configPath":"Run from any terminal","lang":"bash","snippet":"claude mcp add --transport http prism-wallet https://prism-mcp-677461572521.us-central1.run.app/mcp \\\n  --header \"Authorization: Bearer mcp_YOUR_TOKEN_HERE\"","note":"Adds the server for the current user. Use --scope project to commit a .mcp.json to a repo instead. Verify with `claude mcp list`."},{"id":"claude-desktop","label":"Claude Desktop","configPath":"macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\nWindows: %APPDATA%\\Claude\\claude_desktop_config.json","lang":"json","snippet":"{\n  \"mcpServers\": {\n    \"prism-wallet\": {\n      \"url\": \"https://prism-mcp-677461572521.us-central1.run.app/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer mcp_YOUR_TOKEN_HERE\"\n      }\n    }\n  }\n}","note":"Quit and relaunch Claude Desktop after editing. Prism tools show up in the MCP tool picker once the connection is healthy."},{"id":"cursor","label":"Cursor","configPath":"Global: ~/.cursor/mcp.json\nPer-project: <repo>/.cursor/mcp.json","lang":"json","snippet":"{\n  \"mcpServers\": {\n    \"prism-wallet\": {\n      \"url\": \"https://prism-mcp-677461572521.us-central1.run.app/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer mcp_YOUR_TOKEN_HERE\"\n      }\n    }\n  }\n}","note":"Or use Cursor → Settings → MCP → \"Add new MCP server\" and paste the same JSON."},{"id":"vscode","label":"VS Code","configPath":"Workspace: .vscode/mcp.json\nUser settings: settings.json under \"mcp\"","lang":"json","snippet":"{\n  \"servers\": {\n    \"prism-wallet\": {\n      \"type\": \"http\",\n      \"url\": \"https://prism-mcp-677461572521.us-central1.run.app/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer mcp_YOUR_TOKEN_HERE\"\n      }\n    }\n  }\n}","note":"VS Code requires an MCP-capable extension (e.g. GitHub Copilot Chat with MCP enabled). Reload the window after saving."},{"id":"windsurf","label":"Windsurf","configPath":"~/.codeium/windsurf/mcp_config.json","lang":"json","snippet":"{\n  \"mcpServers\": {\n    \"prism-wallet\": {\n      \"url\": \"https://prism-mcp-677461572521.us-central1.run.app/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer mcp_YOUR_TOKEN_HERE\"\n      }\n    }\n  }\n}","note":"Open Windsurf → Cascade → MCP settings → Refresh after editing the file."},{"id":"generic","label":"Any other MCP client","configPath":"Streamable HTTP, JSON-RPC 2.0","lang":"json","snippet":"{\n  \"mcpServers\": {\n    \"prism-wallet\": {\n      \"url\": \"https://prism-mcp-677461572521.us-central1.run.app/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer mcp_YOUR_TOKEN_HERE\"\n      }\n    }\n  }\n}","note":"POST JSON-RPC to /mcp with the Authorization: Bearer header. Most clients accept the mcpServers shape above; otherwise consult that client's MCP docs."}],"claudeAi":{"status":"claude.ai (web) is supported. In Settings → Connectors → \"Add custom connector\", paste the MCP URL plus the client_id and client_secret you were given.","paths":[{"id":"custom-connector","label":"Self-installable custom connector","description":"On claude.ai, go to Settings → Connectors → \"Add custom connector\" and paste the MCP URL plus the client_id and client_secret shown below."}]}}