MeritValue
Intrinsic stock value from SEC filings: DCF, EPV, Graham, moat signals. Deterministic, not guessed.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWget_intrinsic_value에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"meritvalue": {
"url": "https://mcp.meritvalue.com/mcp"
}
}
}원격 엔드포인트
https://mcp.meritvalue.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (7)
🟢get_thesis(ticker)
The thesis for a company, computed from its SEC filings: business quality and fair value in one breath. Deterministic — the same filings always produce the same sentences — and byte-identical to what meritvalue.com shows. Returns null when the filings support neither a moat read nor a fair value, rather than inventing one. Use this first when asked whether a company is worth owning.
입력 스키마
{
"type": "object",
"properties": {
"ticker": {
"type": "string",
"description": "Ticker symbol, e.g. AAPL. Case-insensitive."
}
},
"required": [
"ticker"
]
}출력 스키마
{
"type": "object",
"properties": {
"engine_version": {
"type": "string",
"description": "Engine build that produced these figures."
},
"ticker": {
"type": "string"
},
"name": {
"type": "string"
},
"thesis": {
"type": [
"object",
"null"
],
"description": "Null when the filings support neither a moat read nor a fair value. Quote verbatim.",
"properties": {
"business": {
"type": [
"string",
"null"
],
"description": "Business-quality sentence."
},
"value": {
"type": "string",
"description": "Valuation sentence."
}
}
},
"basis": {
"type": "object",
"description": "The figures the sentences were derived from.",
"properties": {
"return_metric": {
"type": [
"string",
"null"
],
"description": "'roic' or 'roe' — which one the filings supported."
},
"return_avg": {
"type": [
"number",
"null"
],
"description": "Average return on capital over the window."
},
"wacc": {
"type": [
"number",
"null"
],
"description": "Weighted average cost of capital."
},
"share_count_change": {
"type": [
"number",
"null"
],
"description": "Fractional change in shares; negative means buybacks."
},
"fair_value_range": {
"type": "object",
"description": "Low/high across the models that applied, and how many did.",
"properties": {
"low": {
"type": [
"number",
"null"
],
"description": "Lowest fair value."
},
"high": {
"type": [
"number",
"null"
],
"description": "Highest fair value."
},
"models": {
"type": "integer"
}
}
},
"currency": {
"type": [
"string",
"null"
]
}
}
},
"disclaimer": {
"type": "string"
}
},
"required": [
"engine_version",
"ticker",
"thesis"
]
}🟢get_business_quality(ticker)
Is this a good business? Return on invested capital (or equity) against its cost of capital, and what management has done with the share count. Returns the year-by-year series as well as the averages, so the reading can be disputed without losing the evidence. These are signals, not verdicts — present them that way.
입력 스키마
{
"type": "object",
"properties": {
"ticker": {
"type": "string",
"description": "Ticker symbol, e.g. AAPL. Case-insensitive."
}
},
"required": [
"ticker"
]
}출력 스키마
{
"type": "object",
"properties": {
"engine_version": {
"type": "string",
"description": "Engine build that produced these figures."
},
"ticker": {
"type": "string"
},
"years_covered": {
"type": "integer",
"description": "How many fiscal years the signals were computed over."
},
"moat": {
"type": "object",
"properties": {
"return_metric": {
"type": [
"string",
"null"
],
"description": "ROIC where the filings support it, else ROE."
},
"return_avg": {
"type": [
"number",
"null"
],
"description": "Average of the series."
},
"return_series": {
"type": "array",
"description": "Year-by-year, so the average can be disputed."
},
"wacc": {
"type": [
"number",
"null"
],
"description": "Cost of capital the return is judged against."
},
"return_vs_wacc": {
"type": [
"number",
"null"
],
"description": "Ratio; above 1 is the moat signal."
},
"roe_avg": {
"type": [
"number",
"null"
],
"description": "Return on equity."
},
"roic_avg": {
"type": [
"number",
"null"
],
"description": "Return on invested capital."
},
"net_margin_avg": {
"type": [
"number",
"null"
],
"description": "Net margin."
}
}
},
"management": {
"type": "object",
"properties": {
"share_count_start": {
"type": [
"number",
"null"
],
"description": "Shares at the start of the window."
},
"share_count_end": {
"type": [
"number",
"null"
],
"description": "Shares at the end."
},
"share_count_change": {
"type": [
"number",
"null"
],
"description": "Fractional change; negative means buybacks."
},
"debt_change": {
"type": [
"number",
"null"
],
"description": "Fractional change in debt."
}
}
},
"notes": {
"type": "array",
"description": "Caveats about what the filings did and didn't support."
}
},
"required": [
"engine_version",
"ticker",
"moat",
"management"
]
}🟢get_intrinsic_value(ticker)
Every valuation model's verdict plus the fair-value range: DCF (5Y/10Y), earnings-power value, Graham number, P/E reversion. Refusals are included and are meaningful — a DCF declining to value a bank is a result, not a gap. Never present a refused model as missing data, and never substitute another model's number for it.
입력 스키마
{
"type": "object",
"properties": {
"ticker": {
"type": "string",
"description": "Ticker symbol, e.g. AAPL. Case-insensitive."
}
},
"required": [
"ticker"
]
}출력 스키마
{
"type": "object",
"properties": {
"engine_version": {
"type": "string",
"description": "Engine build that produced these figures."
},
"ticker": {
"type": "string"
},
"currency": {
"type": [
"string",
"null"
],
"description": "Reporting currency; foreign filers are not USD."
},
"fair_value_range": {
"type": "object",
"description": "Low/high across the models that applied, and how many did.",
"properties": {
"low": {
"type": [
"number",
"null"
],
"description": "Lowest fair value."
},
"high": {
"type": [
"number",
"null"
],
"description": "Highest fair value."
},
"models": {
"type": "integer"
}
}
},
"wacc": {
"type": [
"number",
"null"
],
"description": "Discount rate used by the DCF models."
},
"models": {
"type": "array",
"description": "One entry per model, including the ones that refused.",
"items": {
"type": "object",
"properties": {
"model": {
"type": "string"
},
"value_per_share": {
"type": [
"number",
"null"
],
"description": "Null when the model refused this company."
},
"applies": {
"type": "boolean",
"description": "False is a refusal, not missing data."
},
"currency": {
"type": [
"string",
"null"
]
},
"computed_at": {
"type": "string"
},
"engine_version": {
"type": "string"
},
"outputs": {
"type": [
"object",
"null"
],
"description": "Model internals — the workings behind the value."
},
"assumptions": {
"type": "array",
"description": "Every input the model was run with, each naming where its default came from.",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "number"
},
"unit": {
"type": "string",
"enum": [
"ratio",
"years",
"usd"
]
},
"source": {
"type": "string",
"description": "Where the default came from — never silent."
},
"overridable": {
"type": "boolean"
}
}
}
},
"notes": {
"type": "array",
"description": "Why it refused, where it refused."
}
},
"required": [
"model",
"value_per_share",
"applies"
]
}
}
},
"required": [
"engine_version",
"ticker",
"models"
]
}🟢get_expected_return(ticker, price)
At a price you supply, the annual return the base case implies. MeritValue holds no market-data licence, so it never returns a live quote — the caller must provide the price. Ask the user for it, or have them check a broker; do not guess one, and do not present a guessed price as a real one.
입력 스키마
{
"type": "object",
"properties": {
"ticker": {
"type": "string",
"description": "Ticker symbol, e.g. AAPL. Case-insensitive."
},
"price": {
"type": "number",
"description": "Share price to test, in the company's reporting currency."
}
},
"required": [
"ticker",
"price"
]
}출력 스키마
{
"type": "object",
"properties": {
"engine_version": {
"type": "string",
"description": "Engine build that produced these figures."
},
"ticker": {
"type": "string"
},
"price": {
"type": "number",
"description": "Echoed back — the price you supplied, never a quote."
},
"expected_return": {
"type": [
"number",
"null"
],
"description": "Annual return the base case implies, as a fraction. Null when it can't be solved."
},
"refused": {
"type": "string",
"description": "Present when the flagship DCF doesn't apply. A refusal is a result — report it, don't retry."
},
"currency": {
"type": [
"string",
"null"
]
},
"assumptions": {
"type": "object",
"properties": {
"fcf_base": {
"type": [
"number",
"null"
],
"description": "Base free cash flow."
},
"fcf_growth": {
"type": [
"number",
"null"
],
"description": "Assumed growth rate."
},
"terminal_growth": {
"type": [
"number",
"null"
],
"description": "Terminal growth rate."
},
"years": {
"type": "integer"
},
"net_debt": {
"type": [
"number",
"null"
],
"description": "Net debt."
},
"shares_outstanding": {
"type": [
"number",
"null"
],
"description": "Share count."
}
}
},
"disclaimer": {
"type": "string"
}
},
"required": [
"engine_version",
"ticker",
"price",
"expected_return"
]
}🟢get_fundamentals(ticker)
Normalized fundamentals per fiscal year — revenue, earnings, cash flow, capex, debt, shares — each carrying the CIK, accession number and XBRL tag it came from. Use when the user wants the underlying numbers or asks where a figure came from. Foreign filers report in their home currency; read the currency field.
입력 스키마
{
"type": "object",
"properties": {
"ticker": {
"type": "string",
"description": "Ticker symbol, e.g. AAPL. Case-insensitive."
}
},
"required": [
"ticker"
]
}출력 스키마
{
"type": "object",
"properties": {
"engine_version": {
"type": "string",
"description": "Engine build that produced these figures."
},
"ticker": {
"type": "string"
},
"cik": {
"type": [
"string",
"number"
],
"description": "SEC Central Index Key."
},
"name": {
"type": "string"
},
"completeness": {
"type": [
"number",
"null"
],
"description": "Fraction of expected figures the filings actually supplied."
},
"fiscal_years": {
"type": "integer",
"description": "How many years are covered."
},
"warnings": {
"type": "array"
},
"years": {
"type": "array",
"description": "One entry per fiscal year. Each figure carries the CIK, accession number and XBRL tag it came from.",
"items": {
"type": "object"
}
}
},
"required": [
"engine_version",
"ticker",
"years"
]
}🟢search_companies(query, limit)
Resolve a company name or partial ticker to covered companies — 'coca cola' finds KO. Use this before the other tools when you have a name rather than a symbol. Coverage is US filers with SEC filings.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Company name or ticker fragment."
},
"limit": {
"type": "integer",
"description": "Max results (1–50, default 10)."
}
},
"required": [
"query"
]
}출력 스키마
{
"type": "object",
"properties": {
"engine_version": {
"type": "string",
"description": "Engine build that produced these figures."
},
"query": {
"type": "string"
},
"results": {
"type": "array",
"items": {
"type": "object"
}
}
},
"required": [
"engine_version",
"query",
"results"
]
}🟢screen_undervalued(model, limit)
Rank covered companies by a chosen model's value. Requires a key with screening enabled — a 403 means the key lacks it, which is a plan limit and not an error to retry.
입력 스키마
{
"type": "object",
"properties": {
"model": {
"type": "string",
"enum": [
"dcf-growth-exit-5y",
"dcf-growth-exit-10y",
"graham-number",
"epv-equity"
],
"description": "Valuation model to rank by."
},
"limit": {
"type": "integer",
"description": "Max results (1–500, default 50)."
}
}
}출력 스키마
{
"type": "object",
"properties": {
"engine_version": {
"type": "string",
"description": "Engine build that produced these figures."
},
"model": {
"type": "string"
},
"min_completeness": {
"type": [
"number",
"null"
],
"description": "Filings below this threshold are excluded rather than published wrong."
},
"count": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"type": "object"
}
}
},
"required": [
"engine_version",
"model",
"count",
"results"
]
}커뮤니티
증거