Stack Facts

Signed EOL dates, exploited CVEs and LLM prices; pay per call in USDC, no account, no daily cap.

使うべきか

品質と安全性

A
説明の品質
97%
スキーマの完全性
90%
命名の品質
80%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~7,351トークン数(ツール定義)
~1.6 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 5.74%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "stackfacts": {
      "url": "https://g5joilnmeep4ntz3nwezxt5dmu.srv.us/mcp"
    }
  }
}

リモートエンドポイント

https://g5joilnmeep4ntz3nwezxt5dmu.srv.us/mcpstreamable-http

できること

ツール一覧

ツール(33)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢stackfacts_eol_product(product)

List every release cycle of a product (Node.js, Python, Ubuntu…) and if it is still supported: EOL (end-of-life) date, support status, LTS, latest version.

入力スキーマ

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string",
      "description": "endoflife.date product id or alias, e.g. nodejs, python, ubuntu (GET /v1/eol/index lists them)",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "product"
  ],
  "additionalProperties": false
}
🟢stackfacts_eol_cycle(product, cycle)

Check if a version is still supported (is python 3.12 still supported?): one release cycle, its EOL (end-of-life) date, support status, LTS, latest patch.

入力スキーマ

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string",
      "description": "endoflife.date product id or alias, e.g. nodejs, python, ubuntu (GET /v1/eol/index lists them)",
      "minLength": 1,
      "maxLength": 200
    },
    "cycle": {
      "type": "string",
      "description": "Release cycle, e.g. 3.12, 22 or 24.04",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "product",
    "cycle"
  ],
  "additionalProperties": false
}
🟢stackfacts_eol_check(items)

Check dependencies, runtimes and OS versions for EOL: is each still supported? Up to 50 product@version pairs to cycle, end-of-life date and support status.

入力スキーマ

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "description": "The versions to check, in order",
      "items": {
        "type": "object",
        "properties": {
          "product": {
            "type": "string",
            "description": "endoflife.date product id or alias, e.g. nodejs, python, ubuntu (GET /v1/eol/index lists them)",
            "minLength": 1,
            "maxLength": 200
          },
          "version": {
            "type": "string",
            "description": "Version string, e.g. 18.19.0 (send \"3.10\" as a string, not a number)",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "product",
          "version"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "items"
  ],
  "additionalProperties": false
}
🟢stackfacts_eol_image(image)

Check a container image for EOL: is node:18-alpine still supported? Maps its runtime, Java and base OS to end-of-life date and support status.

入力スキーマ

{
  "type": "object",
  "properties": {
    "image": {
      "type": "string",
      "description": "Image reference or a whole Dockerfile FROM line (FROM, --platform and AS name are dropped), e.g. node:18-alpine3.19, python:3.12-slim-bookworm, gcr.io/distroless/nodejs20-debian12, FROM --platform=linux/amd64 ubuntu:22.04 AS build",
      "minLength": 1,
      "maxLength": 256
    }
  },
  "required": [
    "image"
  ],
  "additionalProperties": false
}
🟢stackfacts_eol_snapshot

Download the signed EOL (end-of-life) snapshot (endoflife.date, MIT): support status of every product and cycle, still supported or not, plus its manifest.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢stackfacts_kev_lookup(cve)

Check if a CVE is actively exploited (CISA KEV): in_kev, date added, remediation due date, required action and known ransomware use.

入力スキーマ

{
  "type": "object",
  "properties": {
    "cve": {
      "type": "string",
      "description": "CVE id, e.g. CVE-2021-44228",
      "pattern": "^[Cc][Vv][Ee]-\\d{4}-\\d{4,}$",
      "maxLength": 32
    }
  },
  "required": [
    "cve"
  ],
  "additionalProperties": false
}
🟢stackfacts_kev_check(cves)

Check up to 100 CVEs at once against CISA KEV (known exploited vulnerabilities); returns in_kev and the KEV details for each one.

入力スキーマ

{
  "type": "object",
  "properties": {
    "cves": {
      "type": "array",
      "minItems": 1,
      "maxItems": 100,
      "items": {
        "type": "string",
        "description": "CVE id, e.g. CVE-2021-44228",
        "pattern": "^[Cc][Vv][Ee]-\\d{4}-\\d{4,}$",
        "maxLength": 32
      },
      "description": "CVE ids; duplicates are merged"
    }
  },
  "required": [
    "cves"
  ],
  "additionalProperties": false
}
🟢stackfacts_kev_changes(since)

List CVEs added to, removed from or changed in CISA KEV since a snapshot_id, so an agent can poll for newly exploited vulnerabilities.

入力スキーマ

{
  "type": "object",
  "properties": {
    "since": {
      "type": "string",
      "description": "meta.snapshot_id of an earlier kev answer, e.g. kev-20261009T060000Z-1a2b3c4d; kept for 30 snapshots",
      "pattern": "^kev-\\d{8}T\\d{6}Z-[0-9a-f]{8}$",
      "maxLength": 64
    }
  },
  "required": [
    "since"
  ],
  "additionalProperties": false
}
🟢stackfacts_kev_snapshot

Download the full signed CISA KEV snapshot: every known exploited vulnerability, with a manifest to verify the sha256 and signature.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢stackfacts_models_lookup(provider, model)

Get an LLM model's price per million tokens (input, output, cached), context window, max output, capabilities and model deprecation date.

入力スキーマ

{
  "type": "object",
  "properties": {
    "provider": {
      "type": "string",
      "description": "Provider, e.g. openai, anthropic, google (GET /v1/models/index lists them)",
      "minLength": 1,
      "maxLength": 100
    },
    "model": {
      "type": "string",
      "description": "Model id at the provider, e.g. gpt-4o",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "provider",
    "model"
  ],
  "additionalProperties": false
}
🟢stackfacts_models_estimate(model, input_tokens, output_tokens, cached_tokens)

Estimate the USD cost of an LLM call from input, output and cached token counts, exact to the micro-dollar, with the price lines used.

入力スキーマ

{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "provider/model id, e.g. openai/gpt-4o",
      "minLength": 1,
      "maxLength": 200
    },
    "input_tokens": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000000,
      "description": "Uncached input tokens"
    },
    "output_tokens": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000000,
      "description": "Output tokens"
    },
    "cached_tokens": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000000,
      "description": "Cached input tokens (cache reads)"
    }
  },
  "required": [
    "model"
  ],
  "anyOf": [
    {
      "required": [
        "input_tokens"
      ]
    },
    {
      "required": [
        "output_tokens"
      ]
    },
    {
      "required": [
        "cached_tokens"
      ]
    }
  ],
  "additionalProperties": false
}
🟢stackfacts_models_cheapest(min_context, tools, vision, max_usd_per_mtok, providers, ...)

Find the cheapest model with tools and 128k context, or any limits you set: ranks the 10 cheapest LLMs by blended price per million tokens.

入力スキーマ

{
  "type": "object",
  "properties": {
    "min_context": {
      "type": "integer",
      "minimum": 1,
      "description": "Minimum context window in tokens"
    },
    "tools": {
      "type": "boolean",
      "description": "Require tool calling"
    },
    "vision": {
      "type": "boolean",
      "description": "Require image input"
    },
    "max_usd_per_mtok": {
      "type": "number",
      "minimum": 0,
      "description": "Max blended USD per million tokens (3:1 input:output)"
    },
    "providers": {
      "type": "array",
      "minItems": 1,
      "maxItems": 20,
      "items": {
        "type": "string",
        "maxLength": 40
      },
      "description": "Only these providers"
    },
    "include_deprecated": {
      "type": "boolean",
      "description": "Keep deprecated models (default false)"
    },
    "include_free": {
      "type": "boolean",
      "description": "Keep models priced 0/0 (default false)"
    }
  },
  "additionalProperties": false
}
🟢stackfacts_models_changes(since)

List LLM models added, removed or changed (price per million tokens, context window, model deprecation date) since a snapshot_id.

入力スキーマ

{
  "type": "object",
  "properties": {
    "since": {
      "type": "string",
      "description": "meta.snapshot_id of an earlier models answer, e.g. models-20261009T060000Z-1a2b3c4d; kept for 30 snapshots",
      "pattern": "^models-\\d{8}T\\d{6}Z-[0-9a-f]{8}$",
      "maxLength": 64
    }
  },
  "required": [
    "since"
  ],
  "additionalProperties": false
}
🟢stackfacts_models_watch(models, since, warn_days)

Check LLMs for what changed since your last call: changed records (with today's price and limits), removals, deprecated or soon deprecated, with snapshot dates.

入力スキーマ

{
  "type": "object",
  "properties": {
    "models": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "type": "string",
        "maxLength": 200
      },
      "description": "provider/model ids, e.g. openai/gpt-4o"
    },
    "since": {
      "type": "string",
      "maxLength": 64,
      "description": "meta.snapshot_id of your last answer; omit on the first call"
    },
    "warn_days": {
      "type": "integer",
      "minimum": 0,
      "maximum": 365,
      "description": "Alert when deprecation is this many days away or less (default 90)"
    }
  },
  "required": [
    "models"
  ],
  "additionalProperties": false
}
🟢stackfacts_models_snapshot

Download the full signed LLM model catalogue (LiteLLM + models.dev, MIT): prices, limits and capabilities, with a verifiable manifest.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢stackfacts_stack_check(items, cves, packages)

Check dependencies, runtimes and OS versions in one call: OSV advisories for up to 50 package purls, EOL status for 50 product@version pairs, CISA KEV hits.

入力スキーマ

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "minItems": 0,
      "maxItems": 50,
      "description": "The versions to check, in order: \"product@version\" strings or {product, version} objects. Needed unless packages is sent",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "description": "product@version, e.g. [email protected] (GET /v1/eol/index lists products)",
            "pattern": "^[^@]+@.+$",
            "minLength": 3,
            "maxLength": 401
          },
          {
            "type": "object",
            "properties": {
              "product": {
                "type": "string",
                "description": "endoflife.date product id or alias, e.g. nodejs, python, ubuntu (GET /v1/eol/index lists them)",
                "minLength": 1,
                "maxLength": 200
              },
              "version": {
                "type": "string",
                "description": "Version string, e.g. 18.19.0 (send \"3.10\" as a string, not a number)",
                "minLength": 1,
                "maxLength": 200
              }
            },
            "required": [
              "product",
              "version"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    "cves": {
      "type": "array",
      "minItems": 0,
      "maxItems": 100,
      "items": {
        "type": "string",
        "description": "CVE id, e.g. CVE-2021-44228",
        "pattern": "^[Cc][Vv][Ee]-\\d{4}-\\d{4,}$",
        "maxLength": 32
      },
      "description": "Optional CVE ids to check against CISA KEV; duplicates are merged. Leave out (or send []) to check versions only"
    },
    "packages": {
      "type": "array",
      "minItems": 0,
      "maxItems": 50,
      "description": "Optional package URLs with versions, answered as POST /v1/osv/check answers them (advisories, fixed versions, KEV flag). Types: npm, pypi, golang, cargo, maven (nuget, gem and composer are answered as ecosystem_unavailable until imported)",
      "items": {
        "type": "string",
        "description": "purl with a version, e.g. pkg:npm/[email protected] or pkg:maven/org.apache.logging.log4j/[email protected]",
        "pattern": "^pkg:",
        "minLength": 7,
        "maxLength": 512
      }
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢stackfacts_osv_check(packages, lockfile, format)

Check dependencies or a lockfile for vulnerable and malicious packages: up to 50 purls, or a package-lock, yarn.lock, requirements.txt or poetry.lock, on OSV.

入力スキーマ

{
  "type": "object",
  "properties": {
    "packages": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "description": "Package URLs with versions, in order. Types: npm, pypi, golang, cargo, maven (nuget, gem and composer are answered as ecosystem_unavailable until imported)",
      "items": {
        "type": "string",
        "description": "purl with a version, e.g. pkg:npm/[email protected] or pkg:maven/org.apache.logging.log4j/[email protected]",
        "pattern": "^pkg:",
        "minLength": 7,
        "maxLength": 512
      }
    },
    "lockfile": {
      "type": "string",
      "minLength": 1,
      "description": "Instead of packages: the text of a package-lock.json, yarn.lock (v1), requirements.txt or poetry.lock; its distinct exact versions are checked (at most 50). The raw lockfile may also be sent as the whole body"
    },
    "format": {
      "type": "string",
      "enum": [
        "package-lock.json",
        "yarn.lock",
        "requirements.txt",
        "poetry.lock"
      ],
      "description": "The lockfile's format; detected when left out"
    }
  },
  "additionalProperties": false
}
🟢stackfacts_preflight(package, ecosystem, name, version)

Call before installing a package an LLM suggested: one npm, PyPI or purl version against OSV, CISA KEV and EOL data. Returns ok, warn or block with reasons.

入力スキーマ

{
  "type": "object",
  "properties": {
    "package": {
      "type": "string",
      "description": "Package URL with a version, e.g. pkg:npm/[email protected] or pkg:pypi/[email protected]. Types: npm, pypi, golang, cargo, maven (nuget, gem and composer are refused until imported). Send this, or ecosystem, name and version",
      "pattern": "^pkg:",
      "minLength": 7,
      "maxLength": 512
    },
    "ecosystem": {
      "type": "string",
      "description": "npm, pypi, golang, cargo or maven (with name and version, instead of package)",
      "maxLength": 200
    },
    "name": {
      "type": "string",
      "description": "Package name as the registry spells it, e.g. lodash, @babel/traverse, jinja2, org.apache.logging.log4j:log4j-core",
      "maxLength": 200
    },
    "version": {
      "type": "string",
      "description": "Exact version, e.g. 4.17.20",
      "maxLength": 200
    }
  },
  "additionalProperties": false
}
🟢stackfacts_cve_lookup(id)

Get any CVE: CISA KEV entry, EPSS score, CVSS score and patch priority, plus every OSV advisory aliased to it, with affected packages and fixed versions.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "CVE id, e.g. CVE-2021-44228",
      "pattern": "^[Cc][Vv][Ee]-\\d{4}-\\d{4,}$",
      "maxLength": 32
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
🟢stackfacts_package_card(ecosystem, name, version)

Get an npm or PyPI package's latest version, publish dates, deprecation or yank, SPDX licence, repository and runtime range.

入力スキーマ

{
  "type": "object",
  "properties": {
    "ecosystem": {
      "type": "string",
      "description": "npm or pypi",
      "enum": [
        "npm",
        "pypi"
      ]
    },
    "name": {
      "type": "string",
      "description": "Package name, e.g. express, requests; a scoped npm name is URL-encoded in the path (%40types%2Fnode)",
      "pattern": "^@?[A-Za-z0-9][A-Za-z0-9._~/-]*$",
      "minLength": 1,
      "maxLength": 214
    },
    "version": {
      "type": "string",
      "description": "Version to describe (npm: or a dist-tag); default the latest",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9.+_!-]*$",
      "maxLength": 64
    }
  },
  "required": [
    "ecosystem",
    "name"
  ],
  "additionalProperties": false
}
🟢stackfacts_license_check(items, project_license, use)

Call before adding a dependency: check SPDX licences or packages against your project licence and use, with a compatibility verdict per item.

入力スキーマ

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "description": "Up to 20 items: an SPDX licence expression (MIT, GPL-2.0-or-later, MIT OR Apache-2.0) or a package with its declared licence; a package with no licence is unknown",
      "minItems": 1,
      "maxItems": 20,
      "items": {
        "anyOf": [
          {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          },
          {
            "type": "object",
            "properties": {
              "license": {
                "type": "string",
                "description": "SPDX licence expression the package declares, e.g. MIT or (MPL-2.0 OR Apache-2.0)",
                "maxLength": 200
              },
              "ecosystem": {
                "type": "string",
                "description": "Package ecosystem, e.g. npm or pypi",
                "maxLength": 200
              },
              "name": {
                "type": "string",
                "description": "Package name",
                "maxLength": 200
              },
              "version": {
                "type": "string",
                "description": "Package version",
                "maxLength": 200
              },
              "purl": {
                "type": "string",
                "description": "Package URL, e.g. pkg:npm/[email protected]",
                "maxLength": 512
              }
            },
            "additionalProperties": false
          }
        ]
      }
    },
    "project_license": {
      "type": "string",
      "description": "Your project's licence: one SPDX id (Apache-2.0, GPL-3.0-only) or proprietary; default proprietary",
      "maxLength": 200
    },
    "use": {
      "type": "string",
      "description": "How you ship it: distribute (default), saas (network use only) or internal",
      "enum": [
        "distribute",
        "saas",
        "internal"
      ]
    }
  },
  "required": [
    "items"
  ],
  "additionalProperties": false
}
🟢stackfacts_cve_prioritize(cves)

Call before patching: rank up to 100 CVEs by CISA KEV status, then FIRST EPSS exploit probability score and percentile.

入力スキーマ

{
  "type": "object",
  "properties": {
    "cves": {
      "type": "array",
      "description": "Up to 100 CVE ids, e.g. CVE-2021-44228; duplicates are dropped",
      "minItems": 1,
      "maxItems": 100,
      "items": {
        "type": "string",
        "pattern": "^[Cc][Vv][Ee]-\\d{4}-\\d{4,}$",
        "maxLength": 40
      }
    }
  },
  "required": [
    "cves"
  ],
  "additionalProperties": false
}
🟢stackfacts_cve_search(q, package, ecosystem, kev, severity, ...)

Find CVEs by keyword or package name in CISA KEV and OSV (not all of NVD), with KEV status, EPSS score, and CVSS v3 where an OSV advisory has one.

入力スキーマ

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Keyword search (send q or package, not both): 1 to 8 words, all must appear in the CISA KEV vendor, product or vulnerability name; also tried as an exact OSV package name",
      "minLength": 2,
      "maxLength": 100
    },
    "package": {
      "type": "string",
      "description": "Package name (send q or package, not both), matched exactly in the OSV advisories, e.g. lodash",
      "minLength": 1,
      "maxLength": 214
    },
    "ecosystem": {
      "type": "string",
      "description": "With package only: npm, PyPI, Maven, Go, crates.io, NuGet, RubyGems or Packagist (or the purl type); default all",
      "maxLength": 20
    },
    "kev": {
      "type": "boolean",
      "description": "true: only CVEs in CISA KEV; false: only CVEs not in KEV"
    },
    "severity": {
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high",
        "critical"
      ],
      "description": "Only CVEs of this severity or higher (from the OSV advisories; keeps only CVEs with an OSV score or label, so most KEV-only CVEs are left out)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Most results to return (default 20, at most 50)"
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢stackfacts_package_preflight(ecosystem, name, project_license, use)

Call before installing an npm or PyPI package: latest version, licence, OSV vulns, CISA KEV CVEs, deprecation or yank. Returns ok, caution or block.

入力スキーマ

{
  "type": "object",
  "properties": {
    "ecosystem": {
      "type": "string",
      "description": "npm or pypi",
      "enum": [
        "npm",
        "pypi"
      ]
    },
    "name": {
      "type": "string",
      "description": "Package name, e.g. express, requests; a scoped npm name is URL-encoded in the path (%40types%2Fnode)",
      "pattern": "^@?[A-Za-z0-9][A-Za-z0-9._~/-]*$",
      "minLength": 1,
      "maxLength": 214
    },
    "project_license": {
      "type": "string",
      "description": "Your project licence, one SPDX id (e.g. MIT, Apache-2.0, GPL-3.0-only) or proprietary; default proprietary",
      "maxLength": 100
    },
    "use": {
      "type": "string",
      "description": "How the package is used: distribute (default), saas or internal",
      "enum": [
        "distribute",
        "saas",
        "internal"
      ]
    }
  },
  "required": [
    "ecosystem",
    "name"
  ],
  "additionalProperties": false
}
🟢stackfacts_upgrade_delta(ecosystem, name, from, to, project_license, ...)

Check moving an npm or PyPI package from one version to another: advisories fixed or introduced, KEV, licence, runtime. Returns go, review or no_go.

入力スキーマ

{
  "type": "object",
  "properties": {
    "ecosystem": {
      "type": "string",
      "description": "npm or pypi",
      "enum": [
        "npm",
        "pypi"
      ]
    },
    "name": {
      "type": "string",
      "description": "Package name, e.g. express, requests; a scoped npm name is URL-encoded in the path (%40types%2Fnode)",
      "pattern": "^@?[A-Za-z0-9][A-Za-z0-9._~/-]*$",
      "minLength": 1,
      "maxLength": 214
    },
    "from": {
      "type": "string",
      "description": "The version you run now: an exact version or an npm dist-tag",
      "minLength": 1,
      "maxLength": 64
    },
    "to": {
      "type": "string",
      "description": "The version you move to; default the latest. An exact version or an npm dist-tag",
      "minLength": 1,
      "maxLength": 64
    },
    "project_license": {
      "type": "string",
      "description": "Your project licence, one SPDX id (e.g. MIT, Apache-2.0, GPL-3.0-only) or proprietary; default proprietary",
      "maxLength": 100
    },
    "use": {
      "type": "string",
      "description": "How the package is used: distribute (default), saas or internal",
      "enum": [
        "distribute",
        "saas",
        "internal"
      ]
    }
  },
  "required": [
    "ecosystem",
    "name",
    "from"
  ],
  "additionalProperties": false
}
🟢stackfacts_lockfile_diff(from, to)

Check two npm or PyPI package lists (purls): version changes with advisories fixed or introduced, KEV, licence, runtime. Returns go, review or no_go.

入力スキーマ

{
  "type": "object",
  "properties": {
    "from": {
      "type": "array",
      "description": "Packages before, as purls with a version, e.g. pkg:npm/[email protected] or pkg:pypi/[email protected] (npm and PyPI only)",
      "minItems": 0,
      "maxItems": 20,
      "items": {
        "type": "string",
        "maxLength": 300
      }
    },
    "to": {
      "type": "array",
      "description": "Packages after, as purls with a version; a package in both lists at another version is judged, one in a single list is reported added or removed",
      "minItems": 0,
      "maxItems": 20,
      "items": {
        "type": "string",
        "maxLength": 300
      }
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false
}
🟢stackfacts_stack_watch(items, cves, packages, warn_days, token, ...)

Check dependencies, runtimes and OS versions for what changed since your last call: EOL passed or near, new OSV advisories, new CISA KEV hits. Returns a token.

入力スキーマ

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "minItems": 0,
      "maxItems": 50,
      "description": "The versions to check, in order: \"product@version\" strings or {product, version} objects. Needed unless packages is sent",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "description": "product@version, e.g. [email protected] (GET /v1/eol/index lists products)",
            "pattern": "^[^@]+@.+$",
            "minLength": 3,
            "maxLength": 401
          },
          {
            "type": "object",
            "properties": {
              "product": {
                "type": "string",
                "description": "endoflife.date product id or alias, e.g. nodejs, python, ubuntu (GET /v1/eol/index lists them)",
                "minLength": 1,
                "maxLength": 200
              },
              "version": {
                "type": "string",
                "description": "Version string, e.g. 18.19.0 (send \"3.10\" as a string, not a number)",
                "minLength": 1,
                "maxLength": 200
              }
            },
            "required": [
              "product",
              "version"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    "cves": {
      "type": "array",
      "minItems": 0,
      "maxItems": 100,
      "items": {
        "type": "string",
        "description": "CVE id, e.g. CVE-2021-44228",
        "pattern": "^[Cc][Vv][Ee]-\\d{4}-\\d{4,}$",
        "maxLength": 32
      },
      "description": "Optional CVE ids to check against CISA KEV; duplicates are merged. Leave out (or send []) to check versions only"
    },
    "packages": {
      "type": "array",
      "minItems": 0,
      "maxItems": 50,
      "description": "Optional package URLs with versions, answered as POST /v1/osv/check answers them (advisories, fixed versions, KEV flag). Types: npm, pypi, golang, cargo, maven (nuget, gem and composer are answered as ecosystem_unavailable until imported)",
      "items": {
        "type": "string",
        "description": "purl with a version, e.g. pkg:npm/[email protected] or pkg:maven/org.apache.logging.log4j/[email protected]",
        "pattern": "^pkg:",
        "minLength": 7,
        "maxLength": 512
      }
    },
    "warn_days": {
      "type": "integer",
      "minimum": 0,
      "maximum": 365,
      "description": "Start only: report an item as due soon when its EOL date is this many days away or fewer (default 90, 0 = off). Kept in the token"
    },
    "token": {
      "type": "string",
      "description": "Re-check only: data.watch.token from your last answer. Nothing else with it but full. It holds your stack in readable form; keep it as you would the stack",
      "pattern": "^sfw1\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]{43}$",
      "maxLength": 48000
    },
    "full": {
      "type": "boolean",
      "description": "Re-check only: also return data.check, the full current stack answer, at the same price (default false)"
    }
  },
  "required": [],
  "description": "Send either the stack (items, cves, packages, warn_days: starts a watch) or a token from the last answer (token, full: a re-check), not both",
  "additionalProperties": false
}
🟢stackfacts_preview(dataset)

Preview a dataset for free: sample end-of-life products, newest CISA KEV entries, LLM prices, a package card or a licence verdict.

入力スキーマ

{
  "type": "object",
  "properties": {
    "dataset": {
      "type": "string",
      "description": "Dataset: eol (software end-of-life), kev (CISA known exploited vulnerabilities), models (LLM prices), package (npm/PyPI package card) or license (licence compatibility)",
      "enum": [
        "eol",
        "kev",
        "models",
        "package",
        "license"
      ]
    }
  },
  "required": [
    "dataset"
  ],
  "additionalProperties": false
}
🟢stackfacts_try(dataset)

Try a paid answer for free on a fixed example: nodejs end-of-life cycles, CVE-2021-44228 in CISA KEV, or openai/gpt-4o prices.

入力スキーマ

{
  "type": "object",
  "properties": {
    "dataset": {
      "type": "string",
      "description": "Dataset: eol (software end-of-life), kev (CISA known exploited vulnerabilities) or models (LLM prices)",
      "enum": [
        "eol",
        "kev",
        "models"
      ]
    }
  },
  "required": [
    "dataset"
  ],
  "additionalProperties": false
}
🟢stackfacts_index(dataset)

List the valid ids for free: end-of-life product names and aliases, or LLM provider/model ids, so a paid call never misses.

入力スキーマ

{
  "type": "object",
  "properties": {
    "dataset": {
      "type": "string",
      "description": "eol (product ids and aliases) or models (provider/model ids)",
      "enum": [
        "eol",
        "models"
      ]
    }
  },
  "required": [
    "dataset"
  ],
  "additionalProperties": false
}
🟢stackfacts_validate(dataset, id)

Validate an id for free before paying: whether a product, product/cycle or provider/model exists, or a CVE id is well formed.

入力スキーマ

{
  "type": "object",
  "properties": {
    "dataset": {
      "type": "string",
      "description": "Dataset: eol (software end-of-life), kev (CISA known exploited vulnerabilities) or models (LLM prices)",
      "enum": [
        "eol",
        "kev",
        "models"
      ]
    },
    "id": {
      "type": "string",
      "description": "Id to check: nodejs, nodejs/22, CVE-2021-44228 or openai/gpt-4o",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "dataset",
    "id"
  ],
  "additionalProperties": false
}
🟢stackfacts_manifest(dataset)

Get the signed manifest of a dataset's latest snapshot for free: snapshot_id, sha256, record count, source, licence and signature.

入力スキーマ

{
  "type": "object",
  "properties": {
    "dataset": {
      "type": "string",
      "description": "Dataset: eol (software end-of-life), kev (CISA known exploited vulnerabilities) or models (LLM prices)",
      "enum": [
        "eol",
        "kev",
        "models"
      ]
    }
  },
  "required": [
    "dataset"
  ],
  "additionalProperties": false
}
🟢stackfacts_keys

Get the Ed25519 public keys (JWK) that verify the signature on every answer and snapshot manifest.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 33 件