Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,554Letters: 14Defects: 1,331counted 4 min ago
teppi

Server definition

Hash
sha256:0a3207d4406e7b12c357518336ca9f54a473f412e7dc974c08292f87b6583e56
What it is
What a remote MCP server returned when asked what it offers: 6 tools

The blob, as servednamed by its sha256

{ "instructions": "Zyberno exposes equity valuation data computed from SEC filings for roughly 10,000 US-listed companies, using the published Brina Gap framework (Fabio Brina, v3.0, DOI 10.5281/zenodo.20651608).\n\nPick one tool by the question being asked. get_stock_valuation answers questions about one named company. screen_stocks finds or ranks companies by criteria across the whole universe, including valuation, quality, growth, balance sheet, price momentum and earnings surprise. list_flagged_stocks returns the two published monthly lists and takes no parameters. get_us_market_valuation answers questions about the whole US market and nothing smaller. calculate_dcf_value and simulate_portfolio_outcomes are calculators over inputs the caller supplies, not lookups: reach for them when the user wants to test their own assumptions rather than read Zyberno's stored figures.\n\nTwo framing rules when presenting results. First, no pure valuation metric carries a standalone return edge, the Brina Gap included; the Gap is one of two lenses here and is meant to be read alongside the Margin of Safety, never on its own. Second, everything this server returns is measurement of current valuation against filings and history. It is research data, not investment advice, and no output forecasts a return or recommends a transaction. Keep the attribution to Zyberno (zyberno.com).", "tools": [ { "description": "Runs a two-stage discounted cash flow on numbers you provide and returns the fair value per share, the margin of safety against the price you gave, and how much of the value sits in the terminal stage. Cash flow grows at your growth rate for the stage-one years, then forever at your terminal rate, with the terminal value from the Gordon Growth Model discounted back over the stage-one years.\n\nUse when the user wants to value a company under their own assumptions, test how sensitive a valuation is to the discount or growth rate, or check the arithmetic of a DCF they are building. Do not use it to look up what a company is worth on Zyberno's own assumptions, which is get_stock_valuation and uses a different, fade-based model; the two will not agree and are not meant to.\n\nThis computes your assumptions, it does not endorse them. The output is arithmetic, and a two-stage DCF is highly sensitive to the discount and terminal rates, so treat a single result as one point rather than an answer.", "inputSchema": { "additionalProperties": false, "properties": { "cash_flow_per_share": { "description": "Starting free cash flow or owner earnings PER SHARE, not the company total. This is the base the projection grows from.", "exclusiveMinimum": 0, "type": "number" }, "current_stock_price": { "description": "Current share price, used only to compute the margin of safety against the fair value.", "exclusiveMinimum": 0, "type": "number" }, "discount_rate": { "description": "Discount rate (required return or WACC) in percent. Pass 10 for 10 percent. Must be greater than the terminal growth rate.", "exclusiveMinimum": 0, "maximum": 50, "type": "number" }, "growth_rate": { "description": "Annual cash flow growth during the first stage, in percent. Pass 8 for 8 percent. Range -20 to 100.", "type": "number" }, "growth_years": { "description": "Length of the high-growth first stage, in years.", "maximum": 20, "minimum": 1, "type": "integer" }, "terminal_growth_rate": { "description": "Perpetual growth rate after the first stage, in percent. Pass 2.5 for 2.5 percent. Range -5 to 15, and must be below the discount rate.", "type": "number" } }, "required": [ "current_stock_price", "cash_flow_per_share", "discount_rate", "growth_years", "growth_rate", "terminal_growth_rate" ], "type": "object" }, "name": "calculate_dcf_value", "outputSchema": null }, { "description": "Returns Zyberno's stored valuation record for a single US-listed company: Margin of Safety against a discounted cash flow estimate, the Brina Gap (the growth rate the business can fund from its own returns minus the growth rate its current price implies), the Brina Matrix quadrant those two produce together, the Zyberno quality score, and trailing twelve month fundamentals from SEC filings.\n\nUse when the user names a company or ticker and wants to know how it is valued. This is also the tool for questions phrased without the framework's vocabulary: what growth rate is priced into a stock, what the market expects from a company, what a reverse DCF on it implies, whether its growth expectations look too high or too low, or whether a cheap-looking stock is actually a value trap. Do not use it to find or rank companies (use screen_stocks), to retrieve the published monthly lists (use list_flagged_stocks), or for price quotes, charts, news, analyst ratings, earnings dates, or non-US listings, none of which this server holds.\n\nRecords refresh on a rolling cycle of roughly two weeks per company, so figures can lag a company's newest filing for part of that cycle. Every response states the date its data was computed.", "inputSchema": { "additionalProperties": false, "properties": { "symbol": { "description": "Ticker symbol of a US-listed company, for example AAPL, MSFT, or BRK.B. Case insensitive. Non-US listings and most OTC ADRs are not covered and return no data.", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_stock_valuation", "outputSchema": null }, { "description": "Returns the Zyberno Market Valuation Score, a single 0 to 100 reading of how expensive the US equity market is relative to its own history, combining the Buffett Indicator, the Shiller PE, the 10 year minus 2 year Treasury curve and the Baa credit spread.\n\nUse for questions about the market as a whole, overall valuation levels, or whether US stocks broadly look expensive or cheap right now. Do not use it for any individual company, sector, or index price level, none of which it measures.\n\nThe score measures present valuation against history. It is not a forecast and not a market timing signal.", "inputSchema": { "additionalProperties": false, "type": "object" }, "name": "get_us_market_valuation", "outputSchema": null }, { "description": "Returns the two lists Zyberno publishes each month from one fixed screen. The first holds companies where the Margin of Safety and the Brina Gap both read as undervalued, labelled Double Discount. The second holds companies that look cheap on trailing earnings power while the Brina Gap reads negative, labelled value trap. Takes no parameters: the thresholds, sector exclusions and ranking are fixed and match the published page.\n\nUse when the user asks what the framework currently flags, or asks about the Double Discount or value trap lists by name. Do not use it for custom criteria (use screen_stocks) or for one named company (use get_stock_valuation).\n\nBoth labels describe where a company sits on two valuation measures at one moment. They are screen output, not recommendations, and neither label forecasts a return.", "inputSchema": { "additionalProperties": false, "type": "object" }, "name": "list_flagged_stocks", "outputSchema": null }, { "description": "Searches Zyberno's database of roughly 10,000 US-listed companies and returns those matching the numeric criteria you supply, ranked by a field you choose. All metrics are computed from SEC filings.\n\nUse when the user wants to find, filter, rank, or count companies by their characteristics rather than asking about one company by name. Omit any filter you do not want applied; omitting all of them ranks the whole covered universe. Do not use it for a single known ticker (use get_stock_valuation), and do not use it to reconstruct the published monthly lists, which apply their own fixed thresholds, sector exclusions and curation (use list_flagged_stocks).\n\nReturns at most 25 companies plus the total number that matched, so a query that is too broad or too narrow reports its own breadth.", "inputSchema": { "additionalProperties": false, "properties": { "brina_gap_max": { "description": "Maximum Brina Gap in percentage points. Use a negative value to isolate companies whose price implies more growth than fundamentals support.", "type": "number" }, "brina_gap_min": { "description": "Minimum Brina Gap in percentage points. Positive means the growth the business can fund exceeds the growth its price implies; negative means the price implies faster growth than the fundamentals support. Pass 3 for 3 percentage points.", "type": "number" }, "current_ratio_min": { "description": "Minimum current ratio. Pass 1.5 for 1.5x.", "type": "number" }, "debt_to_equity_max": { "description": "Maximum debt to equity ratio, as a ratio not a percent. Pass 1.5 for 1.5x.", "type": "number" }, "earnings_yield_min": { "description": "Minimum earnings yield in percent, the inverse of P/E. Pass 8 for 8 percent.", "type": "number" }, "eps_cagr_3yr_min": { "description": "Minimum 3 year diluted EPS compound annual growth rate in percent.", "type": "number" }, "eps_sue_max": { "description": "Maximum standardised earnings surprise (SUE), range -4 to +4.", "type": "number" }, "eps_sue_min": { "description": "Minimum standardised earnings surprise (SUE), a winsorized z-score bounded to the range -4 to +4. Positive means the latest reported earnings beat the trend-based expectation. Pass 1 for a one standard deviation beat.", "type": "number" }, "ev_ebitda_ratio_max": { "description": "Maximum enterprise value to EBITDA ratio.", "type": "number" }, "exchange": { "description": "Restrict to one listing venue.", "enum": [ "NASDAQ", "NYSE", "OTC", "CBOE" ], "type": "string" }, "fcf_yield_min": { "description": "Minimum free cash flow yield in percent. Pass 5 for 5 percent.", "type": "number" }, "fundamental_growth_rate_max": { "description": "Maximum fundamentally fundable growth rate in percent.", "type": "number" }, "fundamental_growth_rate_min": { "description": "Minimum fundamentally fundable growth rate in percent, defined as ROIC times reinvestment rate. This is the first half of the Brina Gap on its own.", "type": "number" }, "gross_margin_ttm_min": { "description": "Minimum trailing twelve month gross margin in percent.", "type": "number" }, "interest_coverage_ratio_min": { "description": "Minimum interest coverage ratio, operating income over interest expense.", "type": "number" }, "limit": { "description": "How many companies to return, 1 to 25. Defaults to 10. The total number that matched is reported regardless.", "maximum": 25, "minimum": 1, "type": "integer" }, "margin_of_safety_max": { "description": "Maximum Margin of Safety in percentage points. Pass 10 for 10 percent.", "type": "number" }, "margin_of_safety_min": { "description": "Minimum Margin of Safety in percentage points, where positive means the price sits below the discounted cash flow estimate. Pass 10 for 10 percent, not 0.1. Negative values are allowed.", "type": "number" }, "market_cap_category": { "description": "Restrict by size band, as an alternative to explicit market cap bounds. Bands are micro under $300M, small $300M to $2B, mid $2B to $10B, large $10B to $200B, mega $200B and above. Note that large excludes mega, so for the very largest companies use mega, and to cover both give market_cap_min instead.", "enum": [ "mega", "large", "mid", "small", "micro" ], "type": "string" }, "market_cap_max": { "description": "Maximum market capitalisation in US dollars.", "type": "number" }, "market_cap_min": { "description": "Minimum market capitalisation in US dollars, for example 2000000000 for 2 billion.", "type": "number" }, "momentum_12_1_max": { "description": "Maximum 12 minus 1 price momentum in percent. Pass a negative value to isolate fallers.", "type": "number" }, "momentum_12_1_min": { "description": "Minimum 12 minus 1 price momentum in percent: total return including dividends over the last 12 months, skipping the most recent month. Pass 20 for 20 percent, or -30 for a 30 percent fall. Values are unbounded above, and the strongest names in the universe can read in the hundreds of percent. Companies listed under 13 months have no window and are excluded whenever any momentum filter is set.", "type": "number" }, "momentum_12_1_pct_max": { "description": "Maximum cross-sectional momentum percentile, 0 to 100.", "type": "number" }, "momentum_12_1_pct_min": { "description": "Minimum cross-sectional momentum percentile, 0 to 100, where 100 is the strongest momentum in the covered universe. Prefer this over the raw percentage when the user asks for strong or weak momentum in relative terms. Percentiles refresh on a monthly recompute, so they can lag the raw figure.", "type": "number" }, "net_margin_ttm_min": { "description": "Minimum trailing twelve month net margin in percent.", "type": "number" }, "operating_margin_ttm_min": { "description": "Minimum trailing twelve month operating margin in percent.", "type": "number" }, "owner_earnings_yield_min": { "description": "Minimum owner earnings yield in percent. Owner earnings is the cash figure the discounted cash flow behind Margin of Safety is built on.", "type": "number" }, "pb_ratio_max": { "description": "Maximum price to book ratio.", "type": "number" }, "pe_ratio_max": { "description": "Maximum trailing price to earnings ratio. Companies with no meaningful P/E, including loss makers, are excluded when this is set.", "type": "number" }, "peg_ratio_max": { "description": "Maximum PEG ratio, price to earnings divided by growth.", "type": "number" }, "price_to_52w_high_max": { "description": "Maximum ratio of current price to the 52 week high. Pass 0.7 to find stocks at least 30 percent below their high.", "type": "number" }, "price_to_52w_high_min": { "description": "Minimum ratio of current price to the 52 week high, where 1.0 means the stock is sitting at its high. Pass 0.95 for within 5 percent of the high.", "type": "number" }, "revenue_cagr_3yr_min": { "description": "Minimum 3 year revenue compound annual growth rate in percent.", "type": "number" }, "revenue_yoy_growth_min": { "description": "Minimum year over year revenue growth in percent.", "type": "number" }, "roe_min": { "description": "Minimum return on equity in percent.", "type": "number" }, "roic_min": { "description": "Minimum return on invested capital in percent. Pass 15 for 15 percent.", "type": "number" }, "sector": { "description": "Restrict to one sector, spelled as Zyberno stores it, for example Technology, Healthcare, Industrials, Energy, Consumer Cyclical, Financial Services, Real Estate, Utilities, Basic Materials, Communication Services, Consumer Defensive.", "type": "string" }, "sort_by": { "description": "Field to rank the matches by, largest first. Defaults to market_cap.", "enum": [ "market_cap", "zyberno_score", "margin_of_safety", "fundamental_vs_implied_gap", "roic", "roe", "fcf_yield", "momentum_12_1", "momentum_12_1_pct", "eps_sue", "pe_ratio" ], "type": "string" }, "zyberno_score_min": { "description": "Minimum Zyberno quality score, on a 0 to 100 scale combining profitability, balance sheet strength and earnings consistency.", "type": "number" } }, "type": "object" }, "name": "screen_stocks", "outputSchema": null }, { "description": "Runs a Monte Carlo simulation over a portfolio balance and returns the distribution of possible end values: percentiles, mean, median, and if you give a goal amount, the share of simulated paths that reached it. Returns are drawn from a normal distribution using the expected return and volatility you supply.\n\nUse when the user asks about the range or probability of outcomes rather than a single projected number, for example the odds of reaching a target, or how much volatility widens the spread. Do not use it to value a company (use calculate_dcf_value or get_stock_valuation), and do not use it for retirement withdrawal, tax, or drawdown-sequencing questions, which it does not model.\n\nThe simulation propagates the assumptions you give it. Normally distributed returns understate real market tail risk, and the output is a property of the inputs, not a prediction about any real portfolio.", "inputSchema": { "additionalProperties": false, "properties": { "annual_volatility_pct": { "description": "Annual standard deviation of returns in percent. Pass 15 for 15 percent. Broad equity indices have historically run in the mid teens.", "minimum": 0, "type": "number" }, "current_balance": { "description": "Starting portfolio value in currency units.", "minimum": 0, "type": "number" }, "expected_annual_return_pct": { "description": "Expected average annual return in percent. Pass 7 for 7 percent.", "type": "number" }, "fee_rate_pct": { "description": "Annual fee drag in percent, for example a fund expense ratio. Defaults to 0.", "minimum": 0, "type": "number" }, "goal_amount": { "description": "Optional target end value. When set, the result reports the share of simulated paths that finished at or above it.", "minimum": 0, "type": "number" }, "inflation_rate_pct": { "description": "Annual inflation in percent. When set above 0, results are expressed in today's purchasing power. Defaults to 0.", "minimum": 0, "type": "number" }, "monthly_contribution": { "description": "Amount added every month. Defaults to 0.", "minimum": 0, "type": "number" }, "simulations": { "description": "Number of simulated paths. Defaults to 10000. More paths stabilise the tails and cost more time.", "maximum": 50000, "minimum": 1000, "type": "integer" }, "years": { "description": "How many years to simulate forward.", "maximum": 60, "minimum": 1, "type": "integer" } }, "required": [ "current_balance", "years", "expected_annual_return_pct", "annual_volatility_pct" ], "type": "object" }, "name": "simulate_portfolio_outcomes", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:0a3207d4406e7b12c357518336ca9f54a473f412e7dc974c08292f87b6583e56 | sha256sum