Skip to main content
Glama
nivela-tech

agnifolio-mcp

Agni Folio MCP Server

CI agnifolio-mcp MCP server License: MIT

Official Model Context Protocol server for Agni Folio — a free, multi-currency wealth & portfolio tracker (stocks, crypto, real estate, fixed deposits, mutual funds, insurance, and loans across 20+ markets).

This is a hosted remote server. There is nothing to install or run — you connect your MCP client to the production endpoint and authenticate with your own Agni Folio account.

Quick connect

Claude (web/desktop): Settings → Connectors → Add custom connectorhttps://agnifolio.com/mcp → complete the OAuth sign-in.

Cursor / Cline / Continue / other stdio-first clients — bridge via mcp-remote:

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

The first call opens a browser window for the OAuth consent flow; tokens are cached locally by mcp-remote.

Related MCP server: personal-finance-mcp

Public-tools server (open source, in this repo)

This repo also contains a small runnable MCP server for Agni Folio's public tools — no account needed:

Tool

What it does

calculate_fire_number

FIRE number, progress %, years-to-FIRE, Coast FIRE — pure local math

get_high_interest_products

Current savings/FD/treasury rates across SG, IN, US (public API)

find_networth_percentile

Net-worth percentile by country/age/gender (anonymized public dataset)

get_agnifolio_info

About Agni Folio + how to connect to the personal-data server

npm install && npm run build
node dist/index.js          # stdio MCP server

# or via Docker
docker build -t agnifolio-public-mcp .
docker run -i --rm agnifolio-public-mcp

Claude Desktop / Cursor config:

{
  "mcpServers": {
    "agnifolio-public": {
      "command": "node",
      "args": ["/path/to/agnifolio-mcp/dist/index.js"]
    }
  }
}

The public-tools server never sees credentials; personal portfolio data is only available through the hosted OAuth server above.

Tools (23)

Read — portfolio: query_holdings, query_holding_by_symbol, query_account_summary, query_performance_summary, query_classification_warnings

Read — FIRE planning: query_user_fire_status, query_user_coast_fire, query_fire_what_if

Read — crypto & trading: query_crypto_pnl, query_exchange_spot_balances, query_open_positions, query_margin_detail, query_recent_trades

Read — protection & legacy: query_insurance_summary, query_nominees

Write (confirm-gated): add_portfolio_entry, add_transaction, add_insurance_policy, delete_portfolio_entry, parse_text_into_entries, set_crypto_cost_basis, recover_crypto_cost_basis, update_user_fire_goals

Every mutating tool is confirm-before-execute: the change is staged and must be approved inside the Agni Folio app before it takes effect. Every external call — read or write — is recorded in a per-user audit log.

Security model

  • Per-user OAuth tokens; the server never sees your client's credentials

  • Scoped access (read vs write) chosen at consent time

  • Revocation: one click in Settings → Connected AI kills the grant

  • Confirm-gated writes + full audit trail

  • Agni Folio is not a brokerage and executes no trades; it is a tracking/analytics tool

About this repository

The server implementation is part of the Agni Folio production backend and is not open source; this repository is the canonical public home for connection docs and issue reports for the MCP surface. Found a problem with a tool? Open an issue or use contact.

Available Tools

4 tools
calculate_fire_numberA

Calculate the FIRE (Financial Independence, Retire Early) number from annual expenses and a safe withdrawal rate, plus — when current net worth, savings and return assumptions are given — progress %, estimated years to FIRE, and the Coast FIRE number. Pure local math, no data leaves the machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
current_ageNoCurrent age (enables Coast FIRE)
annual_expensesYesExpected annual expenses in retirement (any currency)
monthly_savingsNoMonthly amount added to investments
current_net_worthNoCurrent invested net worth
withdrawal_rate_pctNoSafe withdrawal rate percent (default 4)
target_retirement_ageNoTarget retirement age (enables Coast FIRE)
expected_annual_return_pctNoExpected annual return percent (default 7)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the disclosure burden. It adds meaningful behavioral context: 'pure local math, no data leaves the machine' indicates a privacy-safe, deterministic operation. It also discloses conditional output behavior based on optional parameters, though it could mention error/edge cases.

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 well-structured sentences: the first conveys the core function and conditional outputs, the second adds a privacy guarantee. No redundant information; every word serves a purpose, and the main verb appears immediately.

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 7-parameter tool with no annotations or output schema, the description covers the core calculation, conditional extensions, and privacy. It lacks explicit return format details or edge-case handling, but the domain is simple enough that the description provides a reasonably complete picture.

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 coverage is 100%, so the baseline is 3. The description adds value by explaining parameter interactions (e.g., annual expenses + withdrawal_rate yield base FIRE; adding net worth/savings/return gives progress and years). This goes beyond individual schema descriptions and helps the agent understand how parameters combine.

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 calculates a FIRE number from explicit inputs (annual expenses, withdrawal rate) and extends to progress metrics when additional data is provided. It distinguishes itself from sibling tools (info/percentile lookups) by focusing on financial calculation, 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 implicitly defines when to use the tool (for FIRE calculations) and explains that optional parameters enable advanced outputs. It doesn't explicitly mention alternatives or exclusions, but the sibling tools are topically distinct, making the usage context clear without needing direct comparisons.

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

find_networth_percentileA

Find what percentile a given net worth falls into, globally or within specific countries, optionally segmented by age and gender. Uses Agni Folio's anonymized public dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNoOptional age for cohort comparison
genderNoOptional gender for cohort comparison
currencyNoCurrency code of the amount (default USD)USD
countriesNoOptional list of countries to compare within
across_worldNoCompare against the global dataset (default false)
networth_amountYesNet worth amount

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It discloses the data source and optional segments, but does not explain default behavior when across_world is false and no countries are provided, nor the return format. This is adequate but with notable gaps.

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 a single, well-structured sentence that front-loads the action and scoping, with no wasted words. It is efficient and easy to parse.

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?

The tool has 6 parameters and no output schema, so the description needs to explain return values and default behavior. It mentions the dataset but does not explain what happens when across_world is false and no countries are given, nor what the output percentile looks like. This is a significant gap for an agent.

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 covers 100% of parameters, so the baseline is 3. The description adds context by mapping 'globally or within specific countries' to across_world/countries and 'segmented by age and gender' to age/gender, but adds no syntax or format details 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 uses the specific verb 'Find' and clearly identifies the resource: net worth percentile, with scope (global/countries) and optional segments. It is distinct from siblings like calculate_fire_number, which addresses different use cases.

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 clearly indicates the tool is for percentile lookups and mentions global vs country scoping, implying when to use it. However, it doesn't explicitly name alternative tools or state exclusions, so it stops short of a 5.

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

get_agnifolio_infoB

What Agni Folio is, what this public server can do, and how to connect an AI to a user's own portfolio via the hosted OAuth MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description carries full responsibility. It describes the tool's subject matter but does not disclose what happens when called (e.g., returns documentation, requires no side effects, output format). This is a significant gap for a tool with no annotations.

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 efficiently lists three key aspects of the tool's content. It is appropriately short and front-loaded, though it could be slightly more structured with separators.

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?

For a zero-parameter, no-output-schema tool, the description provides a reasonable high-level overview. However, it does not specify the form of the information returned (e.g., text, structured data) or depth of content, leaving some uncertainty for an AI 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?

The tool has zero parameters, and the schema already reflects this with 100% coverage. No parameter semantics are needed, and the description appropriately says nothing about parameters. Baseline for 0 params is 4.

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 provides information about Agni Folio, the public server's capabilities, and OAuth connection guidance. It distinguishes from sibling tools that focus on specific financial calculations, though it lacks an explicit verb like 'returns'.

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 for users wanting to understand the platform and how to connect an AI to a portfolio. It does not explicitly state when to use it vs. alternatives or any exclusions, but the context ('public server', 'hosted OAuth') suggests an overview role.

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

get_high_interest_productsA

List current high-interest savings accounts, fixed deposits, treasury products and similar across Singapore, India and the USA, with rates and conditions. Community-verified data from Agni Folio's public rates database.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoOptional country filter, e.g. 'SG', 'IN', 'US' (matches the product's country field)
product_typeNoOptional type filter, substring match (e.g. 'savings', 'fixed deposit', 'treasury')

TDQS

A4/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 transparency burden. It discloses that data is community-verified and from a public database, and that results include rates and conditions. However, it does not describe return format, sorting, or whether the data updates automatically, leaving some behavioral aspects ambiguous.

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 a single, focused sentence that immediately states the tool's purpose, scope, and data source. Every word adds value and there is no fluff or repetition.

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 tool's low complexity and full schema coverage, the description covers the main aspects: geography, product types, and data provenance. It doesn't mention default behavior when no filters are applied, but that is implicit in the schema. Overall, it is sufficiently complete for a simple list endpoint without an output schema.

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?

The input schema already provides 100% coverage for both parameters (country and product_type), each with descriptions. The tool description adds no additional parameter detail, so it neither compensates nor detracts from the schema. Baseline 3 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 lists high-interest savings accounts, fixed deposits, and treasury products across specific countries (Singapore, India, USA), with rates and conditions. The verb 'List' is specific and the resource is well-defined, distinguishing it from siblings like calculate_fire_number or find_networth_percentile.

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 clear context for when to use the tool: when needing current high-interest product rates across the mentioned countries. It does not explicitly mention alternatives or exclusions, but the context is unambiguous given the sibling tools serve different purposes.

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. 4 tool updatesv0.1.0
    • First observedcalculate_fire_number
    • First observedfind_networth_percentile
    • First observedget_agnifolio_info
    • First observedget_high_interest_products

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct domain: FIRE calculation, server information, high-interest products, and net worth percentiles. There is no functional overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (calculate_, get_, find_). Even though 'find' and 'get' differ, they are both action verbs and the pattern is clear.

Tool Count5/5

With 4 tools, the server is well-scoped for a personal finance assistant. Each tool provides meaningful functionality without unnecessary bloat.

Completeness4/5

The core financial planning workflows (FIRE calculation, rate lookup, percentile comparison) are covered. A minor gap is the absence of a tool for detailed investment or expense tracking, but it does not hinder the main purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A portfolio analysis MCP server that enables AI agents to manage investment portfolios, fetch financial data from Yahoo Finance and CoinGecko, and perform advanced analysis like weight optimization and Monte Carlo simulations. It utilizes reference-based caching to efficiently handle large datasets without bloating the LLM's context window.
    26
    1
    MIT
  • 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
    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
    Not graded
    quality
    A
    maintenance
    Official MCP server for the FinancialReports API. Provides direct access to regulatory filings, financial data, and corporate information from listed companies worldwide via 15 curated tools.
    2
    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/nivela-tech/agnifolio-mcp'

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