Koskamo

ValuEdge MCP

Read-only stock research and portfolio analysis server. Exposes tools for searching securities, valuing stocks, reviewing fundamentals, comparing companies, and screening candidates. Authenticated users with Trial or Unlimited access can also read their personal portfolio, watchlist, and Smart Alerts.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

ValuEdge MCP logo, by ValuEdgeCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by ValuEdge
You need:Sign in with an active Trial or Unlimited accessOAuth sign-inactive Trial or Unlimited access
MCP endpoint (Streamable HTTP)
https://valuedge.app/mcp
Vendor documentation

What you can do with it

  • Search for supported companies or tickers
  • Inspect stock valuation and margin of safety
  • Review financial fundamentals and history
  • Read personal portfolio and watchlist data

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
valuedge-mcp 1.0.0
MCP protocol
2025-06-18
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

ValuEdge is a read-only investment research integration. Public tools cover supported stock search, canonical valuation, fundamentals, comparison, and bounded screening. Private tools cover only the authenticated user's own portfolio, watchlist, and Smart Alerts and require an active Trial or Unlimited subscription (admin access is preserved). Never issue buy, sell, or hold instructions.

Tools

9 advertised

search_securities — Search securities
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user gives an ambiguous company name or ticker and you need to resolve it before valuation or comparison. Search is limited to the ValuEdge-supported security universe.

search_securities input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
search_securities output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "metadata"
  ],
  "properties": {
    "data": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "required": [
        "source",
        "tool",
        "retrieved_at",
        "user_scoped"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "coverage": {
          "type": "object",
          "additionalProperties": {}
        },
        "freshness": {
          "type": [
            "string",
            "null"
          ]
        },
        "user_scoped": {
          "type": "boolean"
        },
        "retrieved_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
search_securities annotations
{
  "title": "Search securities",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_stock_valuation — Get stock valuation
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user asks for one stock's ValuEdge fair value, current price, margin of safety, valuation method, assumptions, confidence, or valuation risk. official_fair_value_source identifies the upstream model/component, while valuation_method_label describes headline composition, so a DCF source can accompany a blended headline. specialist_model.fair_value_blend is the optional source-provided equity-model breakdown and may be null when unavailable; blending_applied is independently reconciled from valid top-level canonical DCF/multiples values and weights. Do not use it for a user's private portfolio.

get_stock_valuation input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9.\\-/:^]*$",
      "maxLength": 24,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
get_stock_valuation output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "metadata"
  ],
  "properties": {
    "data": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "required": [
        "source",
        "tool",
        "retrieved_at",
        "user_scoped"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "coverage": {
          "type": "object",
          "additionalProperties": {}
        },
        "freshness": {
          "type": [
            "string",
            "null"
          ]
        },
        "user_scoped": {
          "type": "boolean"
        },
        "retrieved_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_stock_valuation annotations
{
  "title": "Get stock valuation",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_stock_fundamentals — Get stock fundamentals
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user asks for a stock's ValuEdge financial history, profitability, growth, balance-sheet evidence, business quality, or data coverage. An optional history_limit requests up to 30 periods of selected metrics, current EPS consensus for at most three future fiscal years where present, quarterly P/E samples from existing monthly observations, and bounded source-native annual income, balance-sheet, and cash-flow statement rows where the existing snapshot contains them. EPS is not normalized and past estimate revisions are unavailable. Selected metric trends remain distinct from the full annual statement JSON. Do not infer a trade instruction.

get_stock_fundamentals input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9.\\-/:^]*$",
      "maxLength": 24,
      "minLength": 1
    },
    "history_limit": {
      "type": "integer",
      "maximum": 30,
      "minimum": 1,
      "description": "Optional maximum number of recent annual/quarterly selected-metric rows and annual statement rows (1–30). Omit to preserve the existing compact response. Full annual statement rows retain source fields and currencies; missing source rows/provenance are reported, never filled. Current EPS consensus is capped separately at three future fiscal years; it is not normalized and past revisions are unavailable."
    }
  },
  "additionalProperties": false
}
get_stock_fundamentals output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "metadata"
  ],
  "properties": {
    "data": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "required": [
        "source",
        "tool",
        "retrieved_at",
        "user_scoped"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "coverage": {
          "type": "object",
          "additionalProperties": {}
        },
        "freshness": {
          "type": [
            "string",
            "null"
          ]
        },
        "user_scoped": {
          "type": "boolean"
        },
        "retrieved_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_stock_fundamentals annotations
{
  "title": "Get stock fundamentals",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_stocks — Compare stocks
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user asks to compare two to six stocks on current price, canonical fair value, margin of safety, confidence, valuation risk, and fair-value coverage. This tool compares valuation only; use get_stock_fundamentals separately for growth, profitability, or balance-sheet claims. Do not declare a universal winner or give buy, sell, or hold instructions.

compare_stocks input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "tickers"
  ],
  "properties": {
    "tickers": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9][A-Za-z0-9.\\-/:^]*$",
        "maxLength": 24,
        "minLength": 1
      },
      "maxItems": 6,
      "minItems": 2
    }
  },
  "additionalProperties": false
}
compare_stocks output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "metadata"
  ],
  "properties": {
    "data": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "required": [
        "source",
        "tool",
        "retrieved_at",
        "user_scoped"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "coverage": {
          "type": "object",
          "additionalProperties": {}
        },
        "freshness": {
          "type": [
            "string",
            "null"
          ]
        },
        "user_scoped": {
          "type": "boolean"
        },
        "retrieved_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
compare_stocks annotations
{
  "title": "Compare stocks",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
screen_stocks — Screen stocks
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user wants a bounded ValuEdge stock screen for research candidates such as undervalued, quality, dividend, large-cap, or positive-free-cash-flow stocks. Choose a preset or compose supported filters for undervalued growth and other requests. Use the smallest faithful filter set and state chosen growth/valuation thresholds. Percentages are decimal fractions (0.15 = 15%). Presets only become stricter. The custom baseline requires market cap >=300 million in listing currency and valid canonical fair value. Public screening is NYSE/NASDAQ stocks with a 60-candidate window and at most 12 returned rows, not an exhaustive market scan; disclose incomplete results, source dates, missing coverage and negative-equity caveats. Arbitrary database queries and trade instructions are not supported.

screen_stocks input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 12,
      "minimum": 1
    },
    "sector": {
      "anyOf": [
        {
          "enum": [
            "Technology",
            "Healthcare",
            "Financial Services",
            "Consumer Cyclical",
            "Communication Services",
            "Industrials",
            "Consumer Defensive",
            "Energy",
            "Real Estate",
            "Basic Materials",
            "Utilities"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "filters": {
      "type": "object",
      "properties": {
        "roaMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Strictly greater than (>) ROA. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "roeMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Strictly greater than (>) ROE. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "sortBy": {
          "enum": [
            "opportunityScore",
            "marginOfSafety",
            "marketCap",
            "peRatio",
            "dividendYield",
            "roe",
            "revenueGrowthYoy"
          ],
          "type": "string",
          "description": "Server-side sort within the bounded candidate window. Does not establish an exhaustive universe ranking."
        },
        "roicMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Strictly greater than (>) ROIC. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "sortDir": {
          "enum": [
            "asc",
            "desc"
          ],
          "type": "string",
          "description": "Sort direction; defaults to descending when sortBy is supplied."
        },
        "pbRatioMax": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly less than (<) PB RATIO. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "pbRatioMin": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly greater than (>) PB RATIO. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "peRatioMax": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly less than (<) PE RATIO. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "peRatioMin": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly greater than (>) PE RATIO. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "psRatioMax": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly less than (<) PS RATIO. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "psRatioMin": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly greater than (>) PS RATIO. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "evEbitdaMax": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly less than (<) EV EBITDA. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "evEbitdaMin": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly greater than (>) EV EBITDA. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "pegRatioMax": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly less than (<) PEG ratio. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "pegRatioMin": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly greater than (>) PEG ratio. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "dividendOnly": {
          "type": "boolean",
          "const": true,
          "description": "Require the existing dividend gate: dividend yield > 0.000001 (decimal fraction); omit to leave the selected preset unchanged."
        },
        "forwardPeMax": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly less than (<) FORWARD PE RATIO. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "forwardPeMin": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly greater than (>) FORWARD PE RATIO. Plain ratio/multiple, not a percentage. Missing values do not qualify. Only positive multiples qualify. Catalog availability: partial_coverage; inspect response coverage and source dates.",
          "exclusiveMinimum": 0
        },
        "marketCapMax": {
          "type": "number",
          "maximum": 100000000000000,
          "minimum": 0,
          "description": "At most (<=) Market cap. Absolute market-cap units in the listing currency, not millions or billions. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "marketCapMin": {
          "type": "number",
          "maximum": 100000000000000,
          "minimum": 0,
          "description": "At least (>=) Market cap. Absolute market-cap units in the listing currency, not millions or billions. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "netMarginMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Strictly greater than (>) NET MARGIN. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "debtEquityMax": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "At most (<=) debt equity. Plain ratio/multiple, not a percentage. Missing values do not qualify. Negative equity can produce a negative ratio; this condition alone does not establish low debt. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "grossMarginMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Strictly greater than (>) GROSS MARGIN. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "profitableOnly": {
          "type": "boolean",
          "const": true,
          "description": "Require positive TTM net margin; omit to leave the selected preset unchanged."
        },
        "currentRatioMin": {
          "type": "number",
          "maximum": 10000,
          "minimum": -1000,
          "description": "Strictly greater than (>) current ratio. Plain ratio/multiple, not a percentage. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "epsGrowthYoyMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Minimum; growth_comparison selects >= or > eps growth yoy. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "fcfGrowthYoyMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Minimum; growth_comparison selects >= or > fcf growth yoy. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "minQualityScore": {
          "type": "number",
          "maximum": 100,
          "minimum": 0,
          "description": "At least (>=) Quality score. Score on a 0–100 scale. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "positiveFcfOnly": {
          "type": "boolean",
          "const": true,
          "description": "Require the existing positive-FCF gate: free-cash-flow yield > 0.000001 (decimal fraction); omit to leave the selected preset unchanged."
        },
        "dividendYieldMax": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "At most (<=) Dividend yield. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "dividendYieldMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Strictly greater than (>) Dividend yield. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "revenueCagr3yMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Minimum; growth_comparison selects >= or > revenue cagr 3y. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "minMarginOfSafety": {
          "type": "number",
          "maximum": 0.95,
          "description": "At least this canonical margin of safety: (fair value - price) / fair value. 0.20 means 20%; this is not upside divided by price. Requires valid canonical fair value.",
          "exclusiveMinimum": 0
        },
        "operatingMarginMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Strictly greater than (>) OPERATING MARGIN. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "revenueGrowthYoyMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Minimum; growth_comparison selects >= or > revenue growth yoy. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        },
        "freeCashFlowYieldMin": {
          "type": "number",
          "maximum": 10,
          "minimum": -10,
          "description": "Strictly greater than (>) Free cash flow yield. Decimal fraction: 0.15 means 15%; 2 means 200%. Never send whole-percent units. Missing values do not qualify. Catalog availability: partial_coverage; inspect response coverage and source dates."
        }
      },
      "description": "Optional conjunction (AND) of 1–24 public controls. Only tightens the selected preset; cannot remove its stock-only, exchange, market-cap, or fair-value baseline. Percentages are decimal fractions. Unsupported fields/operators are rejected.",
      "additionalProperties": false
    },
    "preset_id": {
      "enum": [
        "custom",
        "undervalued",
        "high-margin-of-safety",
        "positive-fcf-undervalued",
        "quality-undervalued",
        "dividend-undervalued",
        "large-cap-value",
        "quality-compounders",
        "capitulation"
      ],
      "type": "string",
      "description": "Defaults to undervalued for preset-only calls, or custom when filters are supplied. Explicit presets retain their baseline conditions."
    },
    "growth_comparison": {
      "enum": [
        "gte",
        "gt"
      ],
      "type": "string",
      "description": "For all growth minimums in a custom-filter call: gte means at least (default); gt means strictly greater. Other operators follow each field description: ratio/yield minimums are strict >, positive-multiple maximums are strict <, debt/equity and dividend-yield maximums are <=, and market-cap/score/MOS bounds are inclusive."
    }
  },
  "additionalProperties": false
}
screen_stocks output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "metadata"
  ],
  "properties": {
    "data": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "required": [
        "source",
        "tool",
        "retrieved_at",
        "user_scoped"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "coverage": {
          "type": "object",
          "additionalProperties": {}
        },
        "freshness": {
          "type": [
            "string",
            "null"
          ]
        },
        "user_scoped": {
          "type": "boolean"
        },
        "retrieved_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
screen_stocks annotations
{
  "title": "Screen stocks",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_portfolio — Get my portfolio
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the authenticated user asks to review their own ValuEdge portfolio, holdings, market value, fair-value coverage, allocation, concentration, or risk context. Never accepts a user id and never returns another user's data.

get_my_portfolio input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "portfolio_name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
get_my_portfolio output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "metadata"
  ],
  "properties": {
    "data": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "required": [
        "source",
        "tool",
        "retrieved_at",
        "user_scoped"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "coverage": {
          "type": "object",
          "additionalProperties": {}
        },
        "freshness": {
          "type": [
            "string",
            "null"
          ]
        },
        "user_scoped": {
          "type": "boolean"
        },
        "retrieved_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_my_portfolio annotations
{
  "title": "Get my portfolio",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_my_portfolio — Analyze my portfolio
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the authenticated user asks for their own portfolio concentration, sector or currency allocation, fair-value coverage, or risk context. Explain evidence and limitations without giving buy, sell, or hold instructions.

analyze_my_portfolio input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "portfolio_name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
analyze_my_portfolio output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "metadata"
  ],
  "properties": {
    "data": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "required": [
        "source",
        "tool",
        "retrieved_at",
        "user_scoped"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "coverage": {
          "type": "object",
          "additionalProperties": {}
        },
        "freshness": {
          "type": [
            "string",
            "null"
          ]
        },
        "user_scoped": {
          "type": "boolean"
        },
        "retrieved_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
analyze_my_portfolio annotations
{
  "title": "Analyze my portfolio",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_watchlist — Get my watchlist
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the authenticated user asks to review their own ValuEdge watchlist, including current price, canonical fair value, margin of safety, quality signals, and data freshness. Never accepts a user id.

get_my_watchlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "watchlist_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
get_my_watchlist output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "metadata"
  ],
  "properties": {
    "data": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "required": [
        "source",
        "tool",
        "retrieved_at",
        "user_scoped"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "coverage": {
          "type": "object",
          "additionalProperties": {}
        },
        "freshness": {
          "type": [
            "string",
            "null"
          ]
        },
        "user_scoped": {
          "type": "boolean"
        },
        "retrieved_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_my_watchlist annotations
{
  "title": "Get my watchlist",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_smart_alerts — Get my smart alerts
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the authenticated user asks to review their own ValuEdge Smart Alerts and the valuation context behind them. Never exposes another user's alerts or changes alert state.

get_my_smart_alerts input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1
    },
    "state": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 40,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
get_my_smart_alerts output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "metadata"
  ],
  "properties": {
    "data": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "required": [
        "source",
        "tool",
        "retrieved_at",
        "user_scoped"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "coverage": {
          "type": "object",
          "additionalProperties": {}
        },
        "freshness": {
          "type": [
            "string",
            "null"
          ]
        },
        "user_scoped": {
          "type": "boolean"
        },
        "retrieved_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_my_smart_alerts annotations
{
  "title": "Get my smart alerts",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
563 ms
95th percentile latency
563 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 563 ms · metadata changed · 9 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http valuedge-mcp https://valuedge.app/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add valuedge-mcp --url https://valuedge.app/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable valuedge-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "valuedge-mcp": {
      "url": "https://valuedge.app/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "valuedge-mcp": {
      "type": "streamableHttp",
      "url": "https://valuedge.app/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start valuedge-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "valuedge-mcp": {
      "type": "http",
      "url": "https://valuedge.app/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http valuedge-mcp https://valuedge.app/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "valuedge-mcp": {
      "url": "https://valuedge.app/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "valuedge-mcp": {
      "serverUrl": "https://valuedge.app/mcp"
    }
  }
}

Let your agent find its tools

Find servers like ValuEdge MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.