lunaterminal
Registry code: 3e04b5648b612f14
LunaTerminal (https://lunaterminal.com), the AI research terminal for financial advisors. Market tools return quotes, stock snapshots, price history, 13F holdings, a fundamentals screener, FRED economic series, the Treasury curve, sentiment and news, with dates and sources where available. Deterministic advisor calculations from afa: portfolio review and rebalancing, retirement Monte Carlo, Roth conversions, Social Security claiming, compliance screening and client email triage. Every figure is computed by code, not a model: quote numbers as returned and keep their caveats. Projections and…
- endpoint
- https://lunaterminal.com/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is lunaterminal live?
- Yes — it answered the hub's last check (checked 23h ago). It answered 100% of checks over the last 30 days.
- Is lunaterminal free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does lunaterminal have?
- 21 tools: portfolio_review, retirement_plan, roth_conversion_plan, triage_email, get_stock_snapshot, get_quotes, get_price_history, search_symbols, ….
- Is lunaterminal safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 21 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
get_market_sentiment open 23h ago
The Fear & Greed market sentiment index (0 = extreme fear, 100 = extreme greed) with its previous close, one week, one month and one year ago.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesget_market_news open 23h ago
Recent headlines for one symbol, or the day's market headlines when no symbol is given, with publisher, time and link.
{ "type": "object", "properties": { "limit": { "type": "integer", "maximum": 20, "minimum": 1, "description": "Headlines to return, default 8." }, "symbol": { "type": "string", "maxLength": 16, "description": "Ticker symbol, e.g. NVDA, SPY or BRK.B. Index symbols use ^, e.g. ^GSPC." } }, "additionalProperties": false }arguments 17 linesget_treasury_yield_curve open 23h ago
The latest U.S. Treasury daily par yield curve, from 1 month to 30 years.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesportfolio_review unknown never probed
Review a household's holdings against a target model or custom allocation. Returns value by asset class and account, allocation drift, single-stock concentration, tax-loss harvesting candidates, unrealized gains, stress tests, and an asset-location score with suggestions. Missing prices are fetched from live quotes.
{ "type": "object", "properties": { "band": { "type": "number", "maximum": 25, "minimum": 1, "description": "Rebalancing band in percentage points (default 5): an asset class further than this from target is out of band." }, "model": { "enum": [ "conservative", "moderately_conservative", "moderate", "growth", "aggressive" ], "type": "string", "description": "Target model portfolio: conservative (20% stocks), moderately_conservative (40% stocks), moderate (60% stocks), growth (75% stocks), aggressive (90% stocks). Default moderate. risk_profile_score maps a client to one." }, "prices": { "type": "object", "description": "Latest price per share by symbol, e.g. {\"VTI\": 301.25}. CASH and money-market funds are priced at $1. Symbols without a price here are fetched from live quotes.", "maxProperties": 1000, "additionalProperties": { "type": "number", "exclusiveMinimum": 0 } }, "target": { "type": "object", "properties": { "cash": { "type": "number", "maximum": 100, "minimum": 0, "description": "Cash & equivalents target %" }, "bonds": { "type": "number", "maximum": 100, "minimum": 0, "description": "Bonds target %" }, "us_equity": { "type": "number", "maximum": 100, "minimum": 0, "description": "US stocks target %" }, "intl_equity": { "type": "number", "maximum": 100, "minimum": 0, "description": "International stocks target %" }, "alternatives": { "type": "number", "maximum": 100, "minimum": 0, "description": "Real estate & alternatives target %" } }, "description": "Custom target allocation in percent, totalling 100. Use instead of model.", "additionalProperties": false }, "holdings": { "type": "array", "items": { "type": "object", "required": [ "symbol", "shares" ], "properties": { "shares": { "type": "number", "description": "Number of shares; for CASH, the dollar amount.", "exclusiveMinimum": 0 }, "symbol": { "type": "string", "maxLength": 18, "description": "Ticker, e.g. VTI. Use CASH for cash balances." }, "account": { "type": "string", "maxLength": 60, "description": "Account name, e.g. \"Joint brokerage\". Default \"Brokerage\"." }, "acquired": { "type": "string", "maxLength": 10, "description": "Date acquired, YYYY-MM-DD; decides short- or long-term gains." }, "costBasis": { "type": "number", "minimum": 0, "description": "Total cost basis of this row in dollars (not per share). Omit when unknown." }, "assetClass": { "type": "string", "maxLength": 120, "description": "Optional override: us_equity, intl_equity, bonds, cash or alternatives, or a split such as \"us_equity:60;bonds:40\". Common ETFs and index funds are classified automatically; unknown tickers count as US stocks." }, "accountType": { "type": "string", "maxLength": 30, "description": "taxable, brokerage, individual, joint, trust, ira, traditional ira, rollover ira, sep ira, 401k, 403b, 457, roth, roth ira, roth 401k, hsa or other. Default taxable." } }, "additionalProperties": false }, "maxItems": 300, "description": "Holdings as objects, instead of holdingsCsv. Up to 300 rows; one row per lot gives the best tax estimates." }, "holdingsCsv": { "type": "string", "maxLength": 131072, "description": "Holdings as CSV text in the afa import format: a header row with at least symbol and shares; the full header is account,account_type,symbol,shares,cost_basis,asset_class,acquired. cost_basis is the row's total dollars, acquired is YYYY-MM-DD. Example:\naccount,account_type,symbol,shares,cost_basis,asset_class,acquired\nJoint brokerage,taxable,VTI,120,24000,,2021-03-15\nJoint brokerage,taxable,AAPL,150,18000,,2019-06-01\nJoint brokerage,taxable,CASH,8000,8000,,\nUp to 300 rows and 128 KB. Send this or holdings, not both." }, "harvestMinimum": { "type": "number", "maximum": 10000000, "minimum": 0, "description": "Smallest unrealized loss in dollars worth listing as a tax-loss candidate (default 1000)." }, "concentrationLimit": { "type": "number", "maximum": 100, "minimum": 1, "description": "Flag a single non-diversified holding above this % of the household (default 10)." } }, "additionalProperties": false }arguments 136 linesretirement_plan unknown never probed
Run a retirement Monte Carlo simulation in today's dollars: probability that savings last through the planning age, the range of portfolio values at retirement and at the end, median depletion age when paths fail, the initial withdrawal rate, the effect of three levers (save more, retire two years later, spend 10% less) and the highest spending that keeps the target success rate. Required: currentAge, retirementAge, planToAge, savings and spending. Return and volatility default to afa's capital market assumptions for the chosen model (a step more conservative in retirement); other optional inputs default to 0, and inflation to 2.5%. Results are hypothetical.
{ "type": "object", "required": [ "currentAge", "retirementAge", "planToAge", "savings", "spending" ], "properties": { "seed": { "type": "integer", "maximum": 2147483648, "minimum": 0, "description": "Random seed; the same inputs and seed give the same result (default 1)." }, "model": { "enum": [ "conservative", "moderately_conservative", "moderate", "growth", "aggressive" ], "type": "string", "description": "Model portfolio used for omitted return and volatility inputs: conservative (20% stocks), moderately_conservative (40% stocks), moderate (60% stocks), growth (75% stocks), aggressive (90% stocks). Default moderate." }, "trials": { "type": "integer", "maximum": 10000, "minimum": 100, "description": "Number of simulated market paths (default 2000)." }, "savings": { "type": "number", "maximum": 10000000000, "minimum": 0, "description": "Current investable savings." }, "spending": { "type": "number", "maximum": 100000000, "minimum": 0, "description": "Annual retirement spending from the portfolio and other income, in today’s dollars." }, "inflation": { "type": "number", "maximum": 15, "minimum": -2, "description": "Inflation (%)." }, "planToAge": { "type": "integer", "maximum": 110, "minimum": 60, "description": "Plan through age." }, "currentAge": { "type": "integer", "maximum": 100, "minimum": 18, "description": "Current age." }, "volatility": { "type": "number", "maximum": 60, "minimum": 0, "description": "Annual volatility before retirement (%)." }, "otherIncome": { "type": "number", "maximum": 100000000, "minimum": 0, "description": "Social Security, pensions and other income per year, in today’s dollars." }, "contribution": { "type": "number", "maximum": 100000000, "minimum": 0, "description": "Annual savings until retirement." }, "distribution": { "enum": [ "normal", "fat" ], "type": "string", "description": "normal (default) or fat-tailed returns (Student-t), which make severe years more frequent." }, "retirementAge": { "type": "integer", "maximum": 100, "minimum": 30, "description": "Retirement age." }, "targetSuccess": { "type": "number", "maximum": 99, "minimum": 50, "description": "Success rate in percent used for sustainable spending (default 85)." }, "expectedReturn": { "type": "number", "maximum": 20, "minimum": -5, "description": "Expected annual return before retirement (%)." }, "otherIncomeAge": { "type": "integer", "maximum": 100, "minimum": 50, "description": "Age other income starts." }, "volatilityRetired": { "type": "number", "maximum": 60, "minimum": 0, "description": "Annual volatility in retirement (%)." }, "withdrawalTaxRate": { "type": "number", "maximum": 60, "minimum": 0, "description": "Average tax rate on withdrawals in percent; withdrawals are grossed up for it (default 0)." }, "contributionGrowth": { "type": "number", "maximum": 10, "minimum": -10, "description": "Annual savings growth above inflation (%)." }, "expectedReturnRetired": { "type": "number", "maximum": 20, "minimum": -5, "description": "Expected annual return in retirement (%)." } }, "additionalProperties": false }arguments 140 linesroth_conversion_plan unknown never probed
Compare Roth conversion strategies year by year under 2026 federal tax law in today's dollars: no conversions versus filling the 12%, 22%, 24% or 32% bracket each year until RMDs start (or stopAge). Models RMDs, Social Security taxation, the senior deduction, a flat state tax and heirs' tax on the remaining traditional balance, and flags IRMAA years. Returns each strategy's lifetime tax, after-tax wealth and amount converted, the best strategy by after-tax wealth, its year-by-year schedule, and the assumptions. Required: filingStatus, birthYear and traditional balance.
{ "type": "object", "required": [ "filingStatus", "birthYear", "traditional" ], "properties": { "roth": { "type": "number", "minimum": 0, "description": "Roth balance (default 0)." }, "endAge": { "type": "integer", "maximum": 120, "minimum": 19, "description": "Last plan year age (default 95)." }, "stopAge": { "type": "integer", "maximum": 120, "minimum": 0, "description": "Last conversion age (default the year before RMDs start)." }, "taxable": { "type": "number", "minimum": 0, "description": "Taxable account balance that pays conversion tax (default 0)." }, "startAge": { "type": "integer", "maximum": 110, "minimum": 18, "description": "First plan year age (default the client's age in 2026)." }, "birthYear": { "type": "integer", "maximum": 2026, "minimum": 1900, "description": "Client birth year." }, "realReturn": { "type": "number", "maximum": 15, "minimum": -10, "description": "Annual return after inflation in percent (default 0)." }, "heirTaxRate": { "type": "number", "maximum": 50, "minimum": 0, "description": "Heirs' tax rate on the inherited traditional balance in percent (default 24)." }, "otherIncome": { "type": "number", "minimum": 0, "description": "Wages and pensions per year (default 0)." }, "traditional": { "type": "number", "minimum": 0, "description": "Traditional IRA/401(k) balance in dollars." }, "filingStatus": { "enum": [ "single", "mfj" ], "type": "string", "description": "single or mfj (married filing jointly)." }, "stateTaxRate": { "type": "number", "maximum": 15, "minimum": 0, "description": "Flat state income tax rate in percent (default 0)." }, "socialSecurity": { "type": "object", "properties": { "annual": { "type": "number", "minimum": 0, "description": "Household benefits per year, today's dollars." }, "startAge": { "type": "integer", "maximum": 70, "minimum": 62, "description": "Client age when benefits start." } }, "description": "Household Social Security benefits.", "additionalProperties": false }, "spouseBirthYear": { "type": "integer", "maximum": 2026, "minimum": 1900, "description": "Spouse birth year (mfj only; default same as client)." }, "otherIncomeEndAge": { "type": "integer", "maximum": 120, "minimum": 0, "description": "Age when other income stops (default never)." } }, "additionalProperties": false }arguments 111 linestriage_email unknown never probed
Classify the text of an incoming client email and detect fraud red flags such as new banking details or requests to avoid a phone call. Returns the risk level, urgency, complaint logging flag, and suggested steps for the advisor, including verification by phone when fraud or account takeover is suspected.
{ "type": "object", "required": [ "text" ], "properties": { "text": { "type": "string", "maxLength": 20000, "description": "The email text (subject and body), up to 20,000 characters." } }, "additionalProperties": false }arguments 14 linesget_stock_snapshot unknown never probed
Price, daily change, day and 52-week range, market cap, valuation (P/E, forward P/E, EPS, dividend yield), company profile (sector, industry, CEO, employees, description), revenue and margins, the next earnings date and the ETFs that hold it, for one stock or ETF. Includes the as-of time and source.
{ "type": "object", "required": [ "symbol" ], "properties": { "symbol": { "type": "string", "maxLength": 16, "description": "Ticker symbol, e.g. NVDA, SPY or BRK.B. Index symbols use ^, e.g. ^GSPC." } }, "additionalProperties": false }arguments 14 linesget_quotes unknown never probed
Latest quotes for up to 25 stocks, ETFs, indices or currency pairs (e.g. EUR/USD): last price, change, day range, previous close, volume and 52-week range, each with its observation time and provider.
{ "type": "object", "required": [ "symbols" ], "properties": { "symbols": { "type": "array", "items": { "type": "string", "maxLength": 16, "description": "Ticker symbol, e.g. NVDA, SPY or BRK.B. Index symbols use ^, e.g. ^GSPC." }, "maxItems": 25, "description": "1 to 25 symbols." } }, "additionalProperties": false }arguments 19 linesget_price_history unknown never probed
Daily (or intraday for 1D and 5D) price history for one symbol over a range, with the period return, high and low. Returns up to 400 points.
{ "type": "object", "required": [ "symbol" ], "properties": { "range": { "enum": [ "1D", "5D", "1M", "3M", "6M", "YTD", "1Y", "2Y", "5Y", "10Y", "MAX" ], "type": "string", "description": "One of 1D, 5D, 1M, 3M, 6M, YTD, 1Y, 2Y, 5Y, 10Y, MAX. Default 6M." }, "symbol": { "type": "string", "maxLength": 16, "description": "Ticker symbol, e.g. NVDA, SPY or BRK.B. Index symbols use ^, e.g. ^GSPC." } }, "additionalProperties": false }arguments 31 linessearch_symbols unknown never probed
Find ticker symbols by company or fund name, e.g. "nvidia" or "vanguard total".
{ "type": "object", "required": [ "query" ], "properties": { "query": { "type": "string", "maxLength": 40, "description": "Company, fund or ticker to look up." } }, "additionalProperties": false }arguments 14 linesget_economic_series unknown never probed
A U.S. economic series from FRED: fedfunds (effective fed funds rate), treasury10y, inflation, unemployment, cpi or gdp. Returns the latest value, its date and recent history.
{ "type": "object", "required": [ "series" ], "properties": { "series": { "enum": [ "fedfunds", "treasury10y", "inflation", "unemployment", "cpi", "gdp" ], "type": "string", "description": "One of fedfunds, treasury10y, inflation, unemployment, cpi, gdp." } }, "additionalProperties": false }arguments 21 linesrisk_profile_score unknown never probed
Score the eight-question risk questionnaire and map the client to a model portfolio. Four questions measure capacity to absorb losses and four measure willingness to take risk. The profile uses the lower of the two. With no answers, the result contains the questions and choices. With eight answers scored from 1 to 5, it returns the profile, score, rationale, model allocation, and illustrative return and volatility.
{ "type": "object", "properties": { "answers": { "type": "object", "properties": { "range": { "type": "integer", "maximum": 5, "minimum": 1, "description": "Which one-year range of outcomes would the client accept? (illustrative) 1 = −2% to +6%; 2 = −6% to +12%; 3 = −12% to +20%; 4 = −20% to +30%; 5 = −30% to +45%." }, "income": { "type": "integer", "maximum": 5, "minimum": 1, "description": "How stable is the client’s income, excluding this portfolio? 1 = No other income; relies on this portfolio; 2 = Unstable; 3 = Somewhat stable; 4 = Stable; 5 = Very stable with a surplus." }, "horizon": { "type": "integer", "maximum": 5, "minimum": 1, "description": "When will the client need to start withdrawing a significant part of this money? 1 = Within 3 years; 2 = 3 to 5 years; 3 = 6 to 10 years; 4 = 11 to 15 years; 5 = More than 15 years." }, "drawdown": { "type": "integer", "maximum": 5, "minimum": 1, "description": "If the portfolio fell 20% over a few months, the client would most likely… 1 = Sell everything; 2 = Sell some; 3 = Wait it out; 4 = Rebalance into stocks; 5 = Add significant new money." }, "reserves": { "type": "integer", "maximum": 5, "minimum": 1, "description": "How much emergency savings does the client hold outside this portfolio? 1 = None; 2 = Less than 3 months of expenses; 3 = 3 to 6 months; 4 = 6 to 12 months; 5 = More than 12 months." }, "objective": { "type": "integer", "maximum": 5, "minimum": 1, "description": "What is the client’s primary objective for this money? 1 = Preserve capital; 2 = Generate income; 3 = Balance growth and income; 4 = Growth; 5 = Aggressive growth." }, "experience": { "type": "integer", "maximum": 5, "minimum": 1, "description": "How would you describe the client’s investing experience? 1 = None; 2 = Limited; 3 = Moderate; 4 = Experienced; 5 = Extensive, including market downturns." }, "withdrawals": { "type": "integer", "maximum": 5, "minimum": 1, "description": "How much of the portfolio will the client withdraw each year over the next five years? 1 = More than 10%; 2 = 6% to 10%; 3 = 3% to 5%; 4 = Less than 3%; 5 = None." } }, "description": "All eight answers, each 1-5 (1 = first option). Omit to get the questionnaire.", "additionalProperties": false } }, "additionalProperties": false }arguments 61 linesinherited_ira_plan unknown never probed
Work out the distribution rules for an inherited IRA under the SECURE Act final regulations (T.D. 10001) and IRS Pub. 590-B: the beneficiary class (eligible designated, designated or non-designated), whether the owner died before or after the required beginning date, the rule that applies (life expectancy, 10-year with or without annual RMDs, 5-year), the deadline to empty the account, this year's required minimum from the Single Life Expectancy Table, and four ways to drain it (back-loaded, even, front-loaded, fill a bracket) compared on federal tax in 2026 dollars and after-tax value. No names or account numbers are needed.
{ "type": "object", "required": [ "beneficiaryClass", "ownerBirthYear", "ownerDeathDate", "balance" ], "properties": { "roth": { "type": "boolean", "description": "True for an inherited Roth IRA." }, "year": { "type": "integer", "maximum": 2200, "minimum": 1990, "description": "Plan year (default 2026)." }, "balance": { "type": "number", "minimum": 0, "description": "Account balance on December 31 of the prior year." }, "fillRate": { "enum": [ 10, 12, 22, 24, 32, 35 ], "type": "integer", "description": "Bracket to fill each year in the fill strategy (default 24)." }, "realReturn": { "type": "number", "maximum": 15, "minimum": -10, "description": "Annual return after inflation in percent (default 0)." }, "otherIncome": { "type": "number", "minimum": 0, "description": "Beneficiary's other ordinary income per year (default 0)." }, "electTenYear": { "type": "boolean", "description": "Eligible beneficiary elected the 10-year rule (owner died before the required beginning date)." }, "filingStatus": { "enum": [ "single", "mfj" ], "type": "string", "description": "Beneficiary's filing status (default single)." }, "stateTaxRate": { "type": "number", "maximum": 15, "minimum": 0, "description": "Flat state tax rate in percent (default 0)." }, "takenThisYear": { "type": "number", "minimum": 0, "description": "Distributions already taken this year (default 0)." }, "ownerBirthYear": { "type": "integer", "maximum": 2026, "minimum": 1900, "description": "Original owner's birth year." }, "ownerDeathDate": { "type": "string", "maxLength": 10, "description": "Owner's date of death, YYYY-MM-DD (or a year)." }, "beneficiaryClass": { "enum": [ "spouse", "minor_child", "disabled", "chronically_ill", "close_in_age", "designated", "non_designated" ], "type": "string", "description": "spouse = Surviving spouse; minor_child = Owner’s child under 21; disabled = Disabled; chronically_ill = Chronically ill; close_in_age = Not more than 10 years younger than the owner; designated = Other person (designated beneficiary); non_designated = Estate, charity or non-qualifying trust." }, "beneficiaryBirthYear": { "type": "integer", "maximum": 2026, "minimum": 1900, "description": "Beneficiary's birth year (not needed for non_designated)." } }, "additionalProperties": false }arguments 103 linescompliance_screen unknown never probed
Screen draft client communications (emails, letters, social posts, meeting notes) for common FINRA/SEC communication-rule problems, including guarantees, misleading projections, pressure tactics, testimonials, specific recommendations, tax claims, missing performance disclosures, and Social Security or account numbers. Returns a status (clear, review or revise), findings with suggested revisions, and disclosure language for the firm’s compliance review.
{ "type": "object", "required": [ "text" ], "properties": { "text": { "type": "string", "maxLength": 60000, "description": "The text to screen, up to 60,000 characters." }, "hasProfile": { "type": "boolean", "description": "True when the client has a documented risk profile on file; lowers the severity of specific recommendations." }, "clientFacing": { "type": "boolean", "description": "True (default) when the text goes to a client or the public; checks for a general risk disclosure." } }, "additionalProperties": false }arguments 22 linesrebalance_plan unknown never probed
Build a tax-aware rebalancing trade list that brings holdings back to the target model or custom allocation, optionally investing new cash. Sells come from tax-advantaged accounts first, then taxable lots with losses, then the smallest gains; proceeds stay in the account that raised them. Returns each trade (account, symbol, dollars, estimated shares, estimated realized gain and tax), totals, the allocation after the trades, wash-sale and concentration warnings, and notes. Takes the same holdings, prices and target inputs as portfolio_review; missing prices are fetched from live quotes. Trades are estimates for advisor review, not orders.
{ "type": "object", "properties": { "band": { "type": "number", "maximum": 25, "minimum": 1, "description": "Rebalancing band in percentage points (default 5): an asset class further than this from target is out of band." }, "force": { "type": "boolean", "description": "Rebalance to target even when every class is within the band (default false)." }, "model": { "enum": [ "conservative", "moderately_conservative", "moderate", "growth", "aggressive" ], "type": "string", "description": "Target model portfolio: conservative (20% stocks), moderately_conservative (40% stocks), moderate (60% stocks), growth (75% stocks), aggressive (90% stocks). Default moderate. risk_profile_score maps a client to one." }, "prices": { "type": "object", "description": "Latest price per share by symbol, e.g. {\"VTI\": 301.25}. CASH and money-market funds are priced at $1. Symbols without a price here are fetched from live quotes.", "maxProperties": 1000, "additionalProperties": { "type": "number", "exclusiveMinimum": 0 } }, "target": { "type": "object", "properties": { "cash": { "type": "number", "maximum": 100, "minimum": 0, "description": "Cash & equivalents target %" }, "bonds": { "type": "number", "maximum": 100, "minimum": 0, "description": "Bonds target %" }, "us_equity": { "type": "number", "maximum": 100, "minimum": 0, "description": "US stocks target %" }, "intl_equity": { "type": "number", "maximum": 100, "minimum": 0, "description": "International stocks target %" }, "alternatives": { "type": "number", "maximum": 100, "minimum": 0, "description": "Real estate & alternatives target %" } }, "description": "Custom target allocation in percent, totalling 100. Use instead of model.", "additionalProperties": false }, "newCash": { "type": "number", "maximum": 1000000000000, "minimum": 0, "description": "New money to invest, in dollars (default 0)." }, "holdings": { "type": "array", "items": { "type": "object", "required": [ "symbol", "shares" ], "properties": { "shares": { "type": "number", "description": "Number of shares; for CASH, the dollar amount.", "exclusiveMinimum": 0 }, "symbol": { "type": "string", "maxLength": 18, "description": "Ticker, e.g. VTI. Use CASH for cash balances." }, "account": { "type": "string", "maxLength": 60, "description": "Account name, e.g. \"Joint brokerage\". Default \"Brokerage\"." }, "acquired": { "type": "string", "maxLength": 10, "description": "Date acquired, YYYY-MM-DD; decides short- or long-term gains." }, "costBasis": { "type": "number", "minimum": 0, "description": "Total cost basis of this row in dollars (not per share). Omit when unknown." }, "assetClass": { "type": "string", "maxLength": 120, "description": "Optional override: us_equity, intl_equity, bonds, cash or alternatives, or a split such as \"us_equity:60;bonds:40\". Common ETFs and index funds are classified automatically; unknown tickers count as US stocks." }, "accountType": { "type": "string", "maxLength": 30, "description": "taxable, brokerage, individual, joint, trust, ira, traditional ira, rollover ira, sep ira, 401k, 403b, 457, roth, roth ira, roth 401k, hsa or other. Default taxable." } }, "additionalProperties": false }, "maxItems": 300, "description": "Holdings as objects, instead of holdingsCsv. Up to 300 rows; one row per lot gives the best tax estimates." }, "minTrade": { "type": "number", "maximum": 1000000, "minimum": 0, "description": "Smallest trade in dollars (default 100)." }, "taxRates": { "type": "object", "properties": { "longTerm": { "type": "number", "maximum": 60, "minimum": 0, "description": "Long-term gains rate in percent." }, "shortTerm": { "type": "number", "maximum": 60, "minimum": 0, "description": "Short-term gains rate in percent." } }, "description": "Capital-gains rates in percent used to estimate tax (default 24 short-term, 15 long-term).", "additionalProperties": false }, "holdingsCsv": { "type": "string", "maxLength": 131072, "description": "Holdings as CSV text in the afa import format: a header row with at least symbol and shares; the full header is account,account_type,symbol,shares,cost_basis,asset_class,acquired. cost_basis is the row's total dollars, acquired is YYYY-MM-DD. Example:\naccount,account_type,symbol,shares,cost_basis,asset_class,acquired\nJoint brokerage,taxable,VTI,120,24000,,2021-03-15\nJoint brokerage,taxable,AAPL,150,18000,,2019-06-01\nJoint brokerage,taxable,CASH,8000,8000,,\nUp to 300 rows and 128 KB. Send this or holdings, not both." }, "newCashAccount": { "type": "string", "maxLength": 60, "description": "Account name that receives the new cash (default: the first taxable account)." } }, "additionalProperties": false }arguments 164 linessocial_security_strategies unknown never probed
Compare Social Security claiming ages 62-70 for a single client or a couple (all 81 combinations), including spousal top-ups, survivor benefits and delayed credits, ranked by present value in today's dollars. Returns the best available strategy, the top ten, claiming at 62, 67 and 70 for comparison, breakeven ages for the primary and the assumptions. PIA is the monthly benefit at full retirement age from the client's SSA statement.
{ "type": "object", "required": [ "primary" ], "properties": { "spouse": { "type": "object", "required": [ "birthYear", "pia" ], "properties": { "pia": { "type": "number", "maximum": 100000, "minimum": 0, "description": "Primary insurance amount: monthly benefit at full retirement age, in dollars." }, "birthYear": { "type": "integer", "maximum": 2026, "minimum": 1943, "description": "Birth year." }, "lifeExpectancy": { "type": "integer", "maximum": 120, "minimum": 62, "description": "Age at death assumed for the analysis (default 92)." } }, "description": "The spouse, for a married couple.", "additionalProperties": false }, "primary": { "type": "object", "required": [ "birthYear", "pia" ], "properties": { "pia": { "type": "number", "maximum": 100000, "minimum": 0, "description": "Primary insurance amount: monthly benefit at full retirement age, in dollars." }, "birthYear": { "type": "integer", "maximum": 2026, "minimum": 1943, "description": "Birth year." }, "lifeExpectancy": { "type": "integer", "maximum": 120, "minimum": 62, "description": "Age at death assumed for the analysis (default 90)." } }, "description": "The client.", "additionalProperties": false }, "discountRate": { "type": "number", "maximum": 15, "minimum": -5, "description": "Real discount rate in percent for present values (default 2)." } }, "additionalProperties": false }arguments 73 linesstate_tax_estimate unknown never probed
Estimate a household's 2026 federal income tax, net investment income tax (3.8%), alternative minimum tax and resident state income tax in one pass. States: CA, NY, PA, IL, OH, GA, NC, MI, TX, FL, NV, SD, WY, AK, TN, NH, WA (the ten most populous plus states without a wage income tax; Washington's capital gains tax included). Each state's figures carry the year they come from; every result says which rules were applied. Standard deductions only; local income taxes and most credits are not modeled.
{ "type": "object", "required": [ "filingStatus" ], "properties": { "ages": { "type": "array", "items": { "type": "number", "maximum": 120, "minimum": 0 }, "maxItems": 2, "description": "Ages of the filers at year-end (for senior deductions and state retirement exclusions)." }, "state": { "enum": [ "CA", "NY", "PA", "IL", "OH", "GA", "NC", "MI", "TX", "FL", "NV", "SD", "WY", "AK", "TN", "NH", "WA" ], "type": "string", "description": "Two-letter state of residence (omit for federal only)." }, "wages": { "type": "number", "minimum": 0, "description": "Wages, including RSU vests and NSO exercises." }, "isoSpread": { "type": "number", "minimum": 0, "description": "Bargain element of ISOs exercised and held at year-end (AMT preference)." }, "otherIncome": { "type": "number", "minimum": 0, "description": "Interest, Roth conversions and other ordinary income." }, "filingStatus": { "enum": [ "single", "mfj" ], "type": "string", "description": "single or mfj (married filing jointly)." }, "qualifiedIncome": { "type": "number", "minimum": 0, "description": "Qualified dividends plus net long-term capital gains." }, "retirementIncome": { "type": "number", "minimum": 0, "description": "Taxable IRA and pension distributions." }, "netInvestmentIncome": { "type": "number", "minimum": 0, "description": "Net investment income for NIIT (default qualifiedIncome)." }, "taxableSocialSecurity": { "type": "number", "minimum": 0, "description": "Taxable part of Social Security benefits." } }, "additionalProperties": false }arguments 85 linesget_13f_holders unknown never probed
Which tracked institutional managers held a stock in their latest quarterly SEC 13F filings: value, shares, portfolio weight and whether they bought, added or reduced, plus managers that sold out.
{ "type": "object", "required": [ "symbol" ], "properties": { "symbol": { "type": "string", "maxLength": 16, "description": "Ticker symbol, e.g. NVDA, SPY or BRK.B. Index symbols use ^, e.g. ^GSPC." } }, "additionalProperties": false }arguments 14 linesget_13f_insights unknown never probed
What tracked hedge funds did in their latest 13F filings. view: consensus (most bought and sold, new and closed positions), crowding (stocks in the most managers' top tens), mostHeld, rotation (money moving between sectors), funds (the tracked managers).
{ "type": "object", "required": [ "view" ], "properties": { "view": { "enum": [ "consensus", "crowding", "mostHeld", "rotation", "funds" ], "type": "string", "description": "Which view to return." } }, "additionalProperties": false }arguments 20 linesscreen_stocks unknown never probed
Screen stocks on up to 20 fundamentals, each with an optional minimum and maximum (market cap in billions; growth, yield, margins and returns in percent). Returns matching stocks with price, change, market cap, P/E, forward P/E and EPS.
{ "type": "object", "properties": { "limit": { "type": "integer", "maximum": 100, "minimum": 1, "description": "Rows to return, default 25." }, "pbMax": { "type": "number", "description": "Maximum price to book." }, "pbMin": { "type": "number", "description": "Minimum price to book." }, "peMax": { "type": "number", "description": "Maximum trailing P/E." }, "peMin": { "type": "number", "description": "Minimum trailing P/E." }, "psMax": { "type": "number", "description": "Maximum price to sales." }, "psMin": { "type": "number", "description": "Minimum price to sales." }, "capMax": { "type": "number", "description": "Maximum market cap in billions of dollars." }, "capMin": { "type": "number", "description": "Minimum market cap in billions of dollars." }, "pegMax": { "type": "number", "description": "Maximum PEG ratio." }, "pegMin": { "type": "number", "description": "Minimum PEG ratio." }, "roaMax": { "type": "number", "description": "Maximum return on assets, %." }, "roaMin": { "type": "number", "description": "Minimum return on assets, %." }, "roeMax": { "type": "number", "description": "Maximum return on equity, %." }, "roeMin": { "type": "number", "description": "Minimum return on equity, %." }, "betaMax": { "type": "number", "description": "Maximum beta." }, "betaMin": { "type": "number", "description": "Minimum beta." }, "roicMax": { "type": "number", "description": "Maximum return on invested capital, %." }, "roicMin": { "type": "number", "description": "Minimum return on invested capital, %." }, "evSalesMax": { "type": "number", "description": "Maximum EV/sales." }, "evSalesMin": { "type": "number", "description": "Minimum EV/sales." }, "divYieldMax": { "type": "number", "description": "Maximum dividend yield, %." }, "divYieldMin": { "type": "number", "description": "Minimum dividend yield, %." }, "evEbitdaMax": { "type": "number", "description": "Maximum EV/EBITDA." }, "evEbitdaMin": { "type": "number", "description": "Minimum EV/EBITDA." }, "epsGrowthMax": { "type": "number", "description": "Maximum EPS growth, %." }, "epsGrowthMin": { "type": "number", "description": "Minimum EPS growth, %." }, "forwardPeMax": { "type": "number", "description": "Maximum forward P/E." }, "forwardPeMin": { "type": "number", "description": "Minimum forward P/E." }, "netMarginMax": { "type": "number", "description": "Maximum net margin, %." }, "netMarginMin": { "type": "number", "description": "Minimum net margin, %." }, "revGrowthMax": { "type": "number", "description": "Maximum revenue growth, %." }, "revGrowthMin": { "type": "number", "description": "Minimum revenue growth, %." }, "debtEquityMax": { "type": "number", "description": "Maximum debt to equity." }, "debtEquityMin": { "type": "number", "description": "Minimum debt to equity." }, "grossMarginMax": { "type": "number", "description": "Maximum gross margin, %." }, "grossMarginMin": { "type": "number", "description": "Minimum gross margin, %." }, "currentRatioMax": { "type": "number", "description": "Maximum current ratio." }, "currentRatioMin": { "type": "number", "description": "Minimum current ratio." }, "salesGrowthQMax": { "type": "number", "description": "Maximum quarterly sales growth, %." }, "salesGrowthQMin": { "type": "number", "description": "Minimum quarterly sales growth, %." } }, "additionalProperties": false }arguments 172 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id3e04b5648b612f14.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/3e04b5648b612f14/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/3e04b5648b612f14?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.