MeritValue

Intrinsic stock value from SEC filings: DCF, EPV, Graham, moat signals. Deterministic, not guessed.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
96%
Vollständigkeit des Schemas
99%
Qualität der Benennung
97%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (1)

  • LOWTool 'get_intrinsic_value' description lacks action verbin get_intrinsic_value

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~2,536Tokens (Tool-Definitionen)
~3.5 KBTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (1.98% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "meritvalue": {
      "url": "https://mcp.meritvalue.com/mcp"
    }
  }
}

Remote-Endpunkte

https://mcp.meritvalue.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (7)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol, e.g. AAPL. Case-insensitive."
    }
  },
  "required": [
    "ticker"
  ]
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol, e.g. AAPL. Case-insensitive."
    }
  },
  "required": [
    "ticker"
  ]
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol, e.g. AAPL. Case-insensitive."
    }
  },
  "required": [
    "ticker"
  ]
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol, e.g. AAPL. Case-insensitive."
    }
  },
  "required": [
    "ticker"
  ]
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Company name or ticker fragment."
    },
    "limit": {
      "type": "integer",
      "description": "Max results (1–50, default 10)."
    }
  },
  "required": [
    "query"
  ]
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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)."
    }
  }
}

Ausgabe-Schema

{
  "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"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet7 Tools
verifiziertVersion nicht aufgezeichnet7 Tools