Odel
Fillfolio MCP

Fillfolio MCP

@fillfolioTypeScriptMITUpdated 2 days ago

Read-only Fillfolio portfolio: net worth, holdings, cash, liabilities, and activity.

View on GitHub
Server endpointStreamable HTTPOAuthProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

Fillfolio MCP

Read-only Model Context Protocol (MCP) access to Fillfolio, a portfolio net worth tracker for stocks, ETFs, funds, crypto, currency, cash, and liabilities.

Connect Claude, Cursor, ChatGPT, or another MCP host to a paid Fillfolio account. The client can read portfolio summaries, holdings, cost basis, cash and debt, activity, and exact asset details. It cannot trade, move money, change holdings, or see credentials.

Product docs: fillfolio.com/mcp
MCP endpoint: https://fillfolio.com/api/mcp
OAuth client ID: HfY4RTp08YeBNRYm
Official MCP Registry: com.fillfolio/mcp

Fillfolio MCP returns the same normalized portfolio already in your account: brokerage holdings, wallet balances, manual lots, cash, credit-card debt, and net worth. Responses include freshness and unavailable FX-rate states. Provider APIs are not called from an MCP request. Revoke access in Fillfolio Settings. Tokens are never displayed.

Connect

Use Streamable HTTP. Put tokens in the Authorization: Bearer header only. Query-string tokens are rejected.

Paste the Fillfolio MCP OAuth client ID as a public PKCE client and leave the secret blank. Dynamic client registration is off. Do not send ChatGPT or Claude metadata URLs as client_id. Request Clerk OIDC scopes (openid, email, profile, offline_access). Fillfolio copies mcp:read and the tool scopes onto the grant after it accepts the token.

SurfaceURL
Product docshttps://fillfolio.com/mcp
MCPhttps://fillfolio.com/api/mcp
OAuth client IDHfY4RTp08YeBNRYm
Server cardhttps://fillfolio.com/.well-known/mcp/server-card.json
Server card aliashttps://fillfolio.com/.well-known/mcp.json
OAuth protected resourcehttps://fillfolio.com/.well-known/oauth-protected-resource/api/mcp
Auth noteshttps://fillfolio.com/auth.md
Official MCP Registrycom.fillfolio/mcp

Cursor example (~/.cursor/mcp.json or project MCP config):

{
  "mcpServers": {
    "fillfolio": {
      "url": "https://fillfolio.com/api/mcp"
    }
  }
}

If Cursor asks for an OAuth client ID, use HfY4RTp08YeBNRYm and leave the secret blank, then sign in.

Claude Code:

claude mcp add --transport http --client-id HfY4RTp08YeBNRYm --callback-port 1455 fillfolio https://fillfolio.com/api/mcp

Codex (~/.codex/config.toml):

[mcp_servers.fillfolio]
url = "https://fillfolio.com/api/mcp"

If Codex asks for an OAuth client ID, use HfY4RTp08YeBNRYm and leave the secret blank, then sign in.

ChatGPT and Claude web: add a Streamable HTTP connector at https://fillfolio.com/api/mcp, paste the same client ID, leave the secret blank, then sign in with Fillfolio.

Claude Desktop and other local MCP hosts can use a Streamable HTTP bridge such as mcp-remote:

{
  "mcpServers": {
    "fillfolio": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://fillfolio.com/api/mcp"]
    }
  }
}

Use the same OAuth client ID if the bridge asks for one.

Tools

ToolScopePurpose
get_portfolio_summaryportfolio:readNet worth, holdings value, cash, debt, and return availability
list_portfoliosportfolio:readPortfolios for the authenticated user
list_holdingsholdings:readStocks, ETFs, funds, crypto, currency, and other holdings with cost-basis availability
list_cash_and_liabilitiesaccounts:readCash and liabilities without account numbers
list_activityactivity:readBuys, sells, and other activity in a bounded date range
get_assetholdings:readOne canonical asset and its holdings across portfolios

Input and output shapes are in contract/tools.json.

Every successful tool result is wrapped as:

{
  "asOf": "2026-09-03T12:00:00.000Z",
  "partial": false,
  "missing": [],
  "data": {}
}

partial and missing describe unavailable currency conversion. They are not errors.

Holding source values are manual, brokerage, or wallet. Date ranges on list_activity cannot exceed 366 days. Pagination uses cursor plus limit (1 to 100, default 50).

Transport limits

src/transport.ts is the public request-bounding helper used by the hosted server:

  • JSON only, no MCP batches
  • 1 MB request body
  • 2 MB response body
  • bounded object depth and node count

License

MIT. See LICENSE.