protogrid

Search / com.folionomiq/folionomiq

Folionomiq

R0· no sign-in

Measures a portfolio from price history: real bets, look-through, past crises in money. No advice.

v1.5.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality79good
Trust82of 100
Uptime, 30 days97%
Latency p50360 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "folionomiq": {
      "type": "http",
      "url": "https://folionomiq.com/mcp"
    }
  }
}
claude mcp add --transport http folionomiq https://folionomiq.com/mcp
[mcp_servers.folionomiq]
url = "https://folionomiq.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "folionomiq": {
      "type": "remote",
      "url": "https://folionomiq.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "folionomiq": {
      "type": "http",
      "url": "https://folionomiq.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=folionomiq&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZm9saW9ub21pcS5jb20vbWNwIn0%3D"
}
{
  "servers": {
    "folionomiq": {
      "type": "http",
      "url": "https://folionomiq.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "folionomiq": {
      "httpUrl": "https://folionomiq.com/mcp"
    }
  }
}
extensions:
  "folionomiq":
    enabled: true
    name: "folionomiq"
    type: streamable_http
    uri: "https://folionomiq.com/mcp"
    timeout: 300

Quality 79 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations22 of 22 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 7,427 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes67 tool changes in 30 days
  • fail
    stability.rug_pull13 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

22 tools, about 7,427 tokens to load them all · tool set 834c39568a51 · tools last changed 2026-10-05 · checked 2026-10-21 04:18 UTC

Tool changes

  • simulate_pathsremoved

    Simulated, not a forecast: 4,000 paths resampled from one portfolio's own price history, with optional monthly additions; where the middle path and the outer tenths end after the years asked, in money and in today's money, and the share of paths ending below what was put in. It assumes the future pays what the record paid, and it is refused when the record is too short or too extreme for the years asked.

  • living_off_itchangeddescription
    before

    For someone living off a portfolio: replays a yearly withdrawal, raised with real inflation, from every start month the portfolio's own history allows; how many starts lasted the full span, how many ran out and when, the lowest point from the worst start, and the highest yearly rate that ran out from no start in the record. Replayed, not simulated; a count of starts, never a probability; a span the record is too short for is said, not invented.

    after · 63% of words in common

    Replays a yearly withdrawal, raised with real inflation, from every start month the portfolio's history allows: how many starts lasted the full span, how many ran out and when, the lowest point from the worst start, and the highest yearly rate that ran out from no start. Use it for 'can I live off this?'; for money put in every month instead, monthly_plan. amount is the portfolio's value (defaults to the sum of the holdings), withdrawal the yearly amount in today's money, years the span (5 to 50, default 30). A count of starts, never a probability; a span the record is too short for is said, not invented.

  • check_before_you_buychangeddescription
    before

    Before adding one new holding, with a given amount, to an existing portfolio: how much of it is already owned through the current funds (from the fund's SEC filing when there is one), whether it adds an independent bet, and what past crises would have done with it included. For any other change (removing, reweighting, several at once), test_a_change. Counterfactual; never says whether to buy.

    after · 73% of words in common

    Before adding one new holding to an existing portfolio: how much of it is already owned through the current funds (from the fund's SEC filing when there is one), whether it adds an independent bet, and what past crises would have done with it included. Use it for one addition; for removing, reweighting or several changes at once, test_a_change. add is the ticker considered, amount how much of it in the same units as holdings, holdings what is owned now, base the currency (default USD). Counterfactual; never says whether to buy.

  • walk_forwardchangeddescriptionmeaning changed
    before

    Whether re-optimising an allocation would have helped: refit on the years before each date, hold it on prices it had not seen, repeat, and compare that record with the portfolio actually held and with equal weight. Says whether refitting bought anything measurable. Returns the record, never an allocation to hold.

    after · 41% of words in common

    Whether re-optimising an allocation would have helped: fit on the years before each date, hold on prices it had not seen, repeat, and compare that record with the portfolio actually held and with equal weights. Use it only when the reader asks whether an optimiser would have beaten what they hold; it is not for choosing weights. tickers are the candidates (2 to 30); holdings, if given, is the portfolio compared against; objective picks what each fit maximises (default max_sharpe); train_years and step_months set how much history each fit uses and how often it refits. Returns the record, never an allocation to hold.

  • monthly_planadded

    Replays the same amount bought on the first trading day of every month, on one portfolio's own daily history with dividends reinvested: what it became against what was put in, the day it stood furthest below the money put in so far, and the longest stretch below it; then the same plan from every January the record allows, because the start year is luck. Use it for 'if I put X a month into these, what would it have become?'; for withdrawals living_off_it, for the record itself return_history. Holdings are weights here; monthly is the amount, start the first year. In the money of each year, before taxes and trading fees. What happened, never a forecast or a probability; years before the record are not invented.

  • asset_infochangeddescriptionmeaning changed
    before

    One fund or share on its own, no portfolio needed: name, type, exchange, yearly cost when published, its measured return, volatility and worst fall, and for a fund its largest holdings and sectors.

    after · 37% of words in common

    One fund or share on its own, without a portfolio: name, type, exchange, yearly cost when the issuer publishes it, measured return, volatility and worst fall, and for a fund its largest holdings and sectors. Use it before deciding whether a ticker belongs in a measurement; for only today's price use last_price, for what a whole portfolio owns through its funds use look_through. The ticker takes the exchange suffix for non-US listings (VWCE.DE, IWDA.AS); when a ticker is not found, search_symbols finds the right one.

  • last_pricechangeddescription
    before

    The latest daily close for each ticker, in the base currency and in its own, with the date, for turning a number of shares into an amount. A single figure per ticker; no price history is returned.

    after · 64% of words in common

    The latest daily close for each ticker, in the base currency and in its own, with the date. Use it to turn a number of shares into an amount before a measurement; for the history and figures of one asset use asset_info. base sets the currency of the converted price (default USD). One figure per ticker; no price history is returned.

  • plain_findingschangeddescription
    before

    Three or four plain-language sentences about one portfolio (what its risk is built from and its worst historical fall), each with the window it rests on. The shortest and fastest answer, with no tables and no numbered report; every figure is in measure_portfolio.

    after · 68% of words in common

    Three or four plain-language sentences about one portfolio (what its risk is built from and its worst historical fall), each with the window it rests on. Use it for the shortest answer, or for a reader new to investing; every figure is in measure_portfolio. Amounts make the fall come out in money, in the base currency (default USD). No tables and no numbered report.

  • return_historychangeddescription
    before

    What one portfolio returned over its record: growth per year (and after inflation), best and worst months and years, the range of any 12 months in a row, monthly returns by year, and how far the weights drift between rebalances. Past record, not a forecast.

    after · 57% of words in common

    What one portfolio returned over its record: growth per year, before and after inflation, best and worst months and years, the range of any 12 months in a row, returns by month and year, and how far the weights drift between rebalances. Use it for 'how did this do?'; for crises only use past_crises, for money put in every month monthly_plan. Base sets the currency the growth is measured in (default USD), which changes the result for holdings priced in other currencies. Past record only, not a forecast.

  • reverse_stresschangeddescription
    before

    Starts from a loss the holder names (as a fraction: 0.25 is a quarter) and reports the least extreme combination of market moves that would produce it on this portfolio, beside the worst each of those moves actually did in the record. No probability is computed.

    after · 58% of words in common

    Starts from a loss the reader names and finds the least extreme combination of market moves that would produce it on this portfolio, beside the worst each of those moves actually did in the record. Use it for 'what would it take to lose that much?'; for what past crises actually did use past_crises. loss is a fraction (0.25 is a quarter); base sets the currency (default USD). No probability is computed: the answer says how large the moves would be, not how likely.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 82 / 100

no-repository
provenance55
liveness99
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-97% +updated-26d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://folionomiq.com/mcp streamable-httpnoneyes97%360 ms2026-07-282026-10-20

Tools (22)

asset_inforead-onlyOne fund or share on its own, without a portfolio: name, type, exchange, yearly cost when the issuer publishes it, measured return, volatility and worst fall, and for a fund its largest holdings and sectors. Use it before deciding whether a ticker belongs in a measurement; for only today's price use last_price, for what a whole portfolio owns through its funds use look_through. The ticker takes the exchange suffix for non-US listings (VWCE.DE, IWDA.AS); when a ticker is not found, search_symbols finds the right one.
check_before_you_buyread-onlyBefore adding one new holding to an existing portfolio: how much of it is already owned through the current funds (from the fund's SEC filing when there is one), whether it adds an independent bet, and what past crises would have done with it included. Use it for one addition; for removing, reweighting or several changes at once, test_a_change. add is the ticker considered, amount how much of it in the same units as holdings, holdings what is owned now, base the currency (default USD). Counterfactual; never says whether to buy.
compare_portfoliosread-onlyTwo to eight separate portfolios measured over one shared window of price history: growth, volatility, worst fall, and how each moved against the others. Use it for separate portfolios; for a before-and-after of one portfolio, test_a_change. Give each portfolio a short label so the answer can refer to it; base sets the one currency all are measured in (default USD). Says what each was; does not say which to hold.
currency_effectread-onlyFor a portfolio held in one currency but priced partly in others: how much of it is outside the base currency, and what exchange-rate moves added to its growth, volatility and worst fall compared with the same holdings currency-hedged. Use it only when some holdings are priced in another currency than the holder's; for a portfolio entirely in one currency it has nothing to show. Needs base set to the holder's currency to mean anything.
factor_exposureread-onlyHow one portfolio's daily moves line up with four common patterns (the market, small versus large companies, value versus growth, momentum): each sensitivity, whether it is distinguishable from zero, and how much of the movement the four explain together. Use it for 'what style am I really exposed to?'; for how many independent bets there are, portfolio_structure. Holdings as weights or amounts; base sets the currency the returns are measured in (default USD). A sensitivity that cannot be told from zero is reported as such, not as a number to act on.
health_axesread-onlyOne portfolio read along three separate questions: what its risk is built from (concentration), how it behaved when markets broke (resilience), and what it returned for the risk taken (efficiency), each with its own figures. Use it when the reader asks whether something is off in how the portfolio is built; for the full measurement use measure_portfolio. Holdings as weights or amounts; base sets the currency (default USD). No overall score is returned, and an axis with too little history, such as no crisis in the window, comes back without a reading instead of a guessed one.
last_priceread-onlyThe latest daily close for each ticker, in the base currency and in its own, with the date. Use it to turn a number of shares into an amount before a measurement; for the history and figures of one asset use asset_info. base sets the currency of the converted price (default USD). One figure per ticker; no price history is returned.
living_off_itread-onlyReplays a yearly withdrawal, raised with real inflation, from every start month the portfolio's history allows: how many starts lasted the full span, how many ran out and when, the lowest point from the worst start, and the highest yearly rate that ran out from no start. Use it for 'can I live off this?'; for money put in every month instead, monthly_plan. amount is the portfolio's value (defaults to the sum of the holdings), withdrawal the yearly amount in today's money, years the span (5 to 50, default 30). A count of starts, never a probability; a span the record is too short for is said, not invented.
look_throughread-onlyThe companies a portfolio owns through its funds, added up across funds: the largest names with their share of the whole portfolio, names reached through more than one fund, and sectors. Use it for 'what do I really own?'; for the full measurement use measure_portfolio, for one fund alone asset_info. Give holdings as money amounts to get each company in money; base sets that currency (default USD). Figures are minimums: they count only the companies the measurement can name, and the answer says how much of the money that is.
measure_portfolioread-onlyThe complete measurement of one portfolio in a single call: how many independent bets it holds, which holding carries risk out of line with its money, the companies owned through its funds, what past crises did to it and how long it took to come back, and the numbered report. Use it when the reader asks broadly about a portfolio; for one question the narrower tools answer faster: portfolio_structure, look_through, past_crises, portfolio_report. Give amounts to get losses in money; base sets that currency (default USD). Descriptive: no forecast, no advice.
monthly_planread-onlyReplays the same amount bought on the first trading day of every month, on one portfolio's own daily history with dividends reinvested: what it became against what was put in, the day it stood furthest below the money put in so far, and the longest stretch below it; then the same plan from every January the record allows, because the start year is luck. Use it for 'if I put X a month into these, what would it have become?'; for withdrawals living_off_it, for the record itself return_history. Holdings are weights here; monthly is the amount, start the first year. In the money of each year, before taxes and trading fees. What happened, never a forecast or a probability; years before the record are not invented.
past_crisesread-onlyOnly past crises for one portfolio: 2008, 2020, 2022 and others inside its price history, with the fall, the worst day and the days it took to come back. Use it for 'what did crashes do to this?'; for the whole record use return_history. Give amounts to get each fall in money, in the base currency (default USD). Crises before a holding existed are named as not tested, not estimated.
plain_findingsread-onlyThree or four plain-language sentences about one portfolio (what its risk is built from and its worst historical fall), each with the window it rests on. Use it for the shortest answer, or for a reader new to investing; every figure is in measure_portfolio. Amounts make the fall come out in money, in the base currency (default USD). No tables and no numbered report.
portfolio_reportread-onlyThe written report on one portfolio, with every figure numbered F1, F2... beside the method and the window behind it. For a reader who wants something to quote or keep; measure_portfolio returns this same report together with structure, look-through and crises. Amounts make the report speak in money, in the base currency (default USD). The window starts when the youngest holding starts, and the report says so.
portfolio_structureread-onlyHow many independent bets a portfolio's holdings add up to, from how their prices moved together rather than how many tickers there are, and each holding's share of the risk beside its share of the money, over the full record and over recent years. Use it for 'am I diversified?' or 'which holding carries the risk?'; measure_portfolio includes this with look-through and crises. Weights or amounts give the same answer here; base sets the currency the prices are compared in (default USD). The window is set by the youngest holding.
return_historyread-onlyWhat one portfolio returned over its record: growth per year, before and after inflation, best and worst months and years, the range of any 12 months in a row, returns by month and year, and how far the weights drift between rebalances. Use it for 'how did this do?'; for crises only use past_crises, for money put in every month monthly_plan. Base sets the currency the growth is measured in (default USD), which changes the result for holdings priced in other currencies. Past record only, not a forecast.
reverse_stressread-onlyStarts from a loss the reader names and finds the least extreme combination of market moves that would produce it on this portfolio, beside the worst each of those moves actually did in the record. Use it for 'what would it take to lose that much?'; for what past crises actually did use past_crises. loss is a fraction (0.25 is a quarter); base sets the currency (default USD). No probability is computed: the answer says how large the moves would be, not how likely.
search_symbolsread-onlyFinds the ticker when the reader gives a name, part of a ticker or an ISIN (for example 'Vanguard total world' gives VT), with the exchange each listing trades on. Use it first when a ticker is uncertain; for a list of tickers already written down, validate_symbols. base, when given, puts the listings in that currency first. Listings nobody here has checked are marked unchecked.
sweep_holdingread-onlyOne holding already in the portfolio, measured at every weight from none to all, with the rest of the money shared out in proportion: volatility, the holding's share of the risk and the number of independent bets at each point. Use it for 'how much of this is enough to change anything?'; for one specific change use test_a_change, for a holding not yet owned check_before_you_buy. ticker must be one of the holdings; base sets the currency (default USD). It never says which weight to hold.
test_a_changeread-onlyAny change to one portfolio, measured before it is made: the current and the proposed holdings side by side on the same price history (structure, risk, worst falls, and what the change adds or removes). For a single new holding, check_before_you_buy says more; for one holding at every weight, sweep_holding. current and proposed are the two sets of holdings; start and end, when given, fix the window instead of the longest shared one. The 'after' figures are counterfactual. Never says whether to make the change.
validate_symbolsread-onlyChecks a list of tickers before a measurement: which have usable price history, which do not, and the closest listing where a symbol is ambiguous. Use it when the tickers are already written down; when only a name is known, search_symbols. base puts the listing in that currency first where a symbol trades in several (default USD). It measures nothing.
walk_forwardread-onlyWhether re-optimising an allocation would have helped: fit on the years before each date, hold on prices it had not seen, repeat, and compare that record with the portfolio actually held and with equal weights. Use it only when the reader asks whether an optimiser would have beaten what they hold; it is not for choosing weights. tickers are the candidates (2 to 30); holdings, if given, is the portfolio compared against; objective picks what each fit maximises (default max_sharpe); train_years and step_months set how much history each fit uses and how often it refits. Returns the record, never an allocation to hold.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.folionomiq/folionomiq",
  "title": "Folionomiq",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://folionomiq.com/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.5.0",
  "websiteUrl": "https://folionomiq.com/connect",
  "description": "Measures a portfolio from price history: real bets, look-through, past crises in money. No advice."
}