Sighttrue
Measured readings on open-source dependencies: health, end-of-life, model prices, incidents.
我该使用它吗
质量与安全性
发现(24)
- HIGH
- MEDIUM在 who_can_publish 中
- MEDIUM在 package_weight_history 中
- MEDIUM在 withdrawn_but_installed 中
- MEDIUM在 typosquat_check 中
- MEDIUM在 funding_gap 中
- MEDIUM在 time_to_fix 中
- MEDIUM在 advisory_severity 中
- MEDIUM在 runtime_deadlines 中
- MEDIUM在 base_image_check 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"sighttrue": {
"url": "https://sighttrue.com/api/mcp"
}
}
}远程端点
https://sighttrue.com/api/mcpstreamable-http它能做什么
工具清单
工具(31)
🟢check_before_install(registry, name)
Call this before adding a dependency. Returns only the facts a reviewer would be annoyed to discover afterwards: whether the publisher has withdrawn the package, whether it runs scripts on the installing machine, whether its repository is archived, how many advisories are on record, whether the licence is source-available, and how long since it was actually published. Each fact carries the address of the body that published it. It does not say whether to install; it says what is on record.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"name": {
"type": "string",
"description": "Package name as the registry spells it."
}
},
"required": [
"registry",
"name"
],
"additionalProperties": false
}🟢check_package(registry, name)
Read the current standing of one open-source package: downloads with the window they cover, OpenSSF scorecard, advisory count, licence, whether the repository is archived, and when it was last pushed to.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"name": {
"type": "string",
"description": "Package name as the registry spells it."
}
},
"required": [
"registry",
"name"
],
"additionalProperties": false
}🟢check_stack(registry, names)
Read a whole dependency list at once and report what is archived, what carries advisories, what has a source-available licence, and what has not been pushed to in a year. Use when reviewing a package.json, requirements.txt, Cargo.toml, composer.json or Gemfile.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"registry",
"names"
],
"additionalProperties": false
}🟢search_repositories(query, limit)
Find watched repositories whose name contains a string, with their current readings. Use it to discover what is covered before calling the other tools.
输入模式
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1
}
},
"required": [
"query"
],
"additionalProperties": false
}⚪compare_repositories(a, b)
Hold two watched repositories against each other across downloads, OpenSSF scorecard, advisories, forks, stars and findings on record. Compares only; it does not pick a winner.
输入模式
{
"type": "object",
"properties": {
"a": {
"type": "string",
"description": "Repository as owner/name."
},
"b": {
"type": "string",
"description": "Repository as owner/name."
}
},
"required": [
"a",
"b"
],
"additionalProperties": false
}🟢find_model(minContext, maxPrice, provider)
Find language models by price and context window, from a catalogue read daily across sixty providers. Use this before choosing a model: prices move without announcement and training data is out of date on the day it ships.
输入模式
{
"type": "object",
"properties": {
"minContext": {
"type": "integer",
"description": "Minimum context window in tokens."
},
"maxPrice": {
"type": "number",
"description": "Maximum USD per million prompt tokens."
},
"provider": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}🟢check_eol(product, cycle)
Check whether a runtime, database or framework release is still receiving security fixes, and what to move to. Covers about two dozen products read daily from endoflife.date.
输入模式
{
"type": "object",
"properties": {
"product": {
"type": "string",
"description": "Product as endoflife.date spells it, e.g. python, nodejs, postgresql."
},
"cycle": {
"type": "string",
"description": "Release line, e.g. 3.9 or 20. Omit for every cycle."
}
},
"required": [
"product"
],
"additionalProperties": false
}🟢check_provider(provider, days)
Recorded incidents for a hosting or API provider over a window, kept after the provider’s own status page dropped them.
输入模式
{
"type": "object",
"properties": {
"provider": {
"type": "string",
"description": "Provider slug, e.g. cloudflare, openai, github. Omit for every provider."
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 730
}
},
"required": [],
"additionalProperties": false
}🟢list_readings
List every reading this server can return, what each one measures, and which require a key. Call this first if unsure which tool answers a question.
输入模式
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}🟡who_can_publish(registry, name)
How many accounts hold publish rights on a package, as the registry lists them. Answers who can put code on your machine, which is a different question from who writes it. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"name": {
"type": "string",
"description": "Package name as the registry spells it."
}
},
"required": [
"registry",
"name"
],
"additionalProperties": false
}⚪package_weight_history(registry, name)
How the published artefact size has moved over time. Returns the readings taken, not a verdict. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"name": {
"type": "string",
"description": "Package name as the registry spells it."
}
},
"required": [
"registry",
"name"
],
"additionalProperties": false
}🟢withdrawn_but_installed(limit)
Packages whose own publisher has withdrawn them and which are still being installed heavily, with the download figure and the publisher’s notice. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"limit": {
"type": "integer"
}
},
"required": [],
"additionalProperties": false
}🟡typosquat_check(registry, name)
Whether a name is one edit away from a more widely installed package. States that both names exist; which one was meant is the caller’s call. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"name": {
"type": "string",
"description": "Package name as the registry spells it."
}
},
"required": [
"registry",
"name"
],
"additionalProperties": false
}🟡funding_gap(limit)
Packages that ask for funding, beside how heavily they are installed and how many people write them. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"limit": {
"type": "integer"
}
},
"required": [],
"additionalProperties": false
}⚪time_to_fix(registry, name)
Days between an advisory being published and a release appearing that postdates it, per package and as a distribution. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"name": {
"type": "string",
"description": "Package name as the registry spells it."
}
},
"required": [
"registry",
"name"
],
"additionalProperties": false
}⚪advisory_severity(registry, name)
Advisories broken down by severity rather than counted, with identifiers and dates. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"name": {
"type": "string",
"description": "Package name as the registry spells it."
}
},
"required": [
"registry",
"name"
],
"additionalProperties": false
}🟡runtime_deadlines(names)
Support end dates for the runtimes a dependency set requires, including any already past. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"names": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"names"
],
"additionalProperties": false
}🟢base_image_check(image)
For a container base image: its size, when it was last rebuilt, and whether the OS underneath it is still supported. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"image": {
"type": "string"
}
},
"required": [
"image"
],
"additionalProperties": false
}🔴registry_health(registry)
Recorded outages of the package registries themselves, kept after their status pages drop them. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}⚪provider_incidents(provider)
A provider’s recorded incidents, grouped by the component that failed, over the whole archive rather than the window its status page shows. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"provider": {
"type": "string"
}
},
"required": [
"provider"
],
"additionalProperties": false
}⚪provider_transparency(provider)
How long a provider takes to acknowledge an incident: the interval between an incident starting and its first public update. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"provider": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}⚪provider_terms_changed(provider)
When a provider last changed its terms or pricing page, from a stored fingerprint of the page. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"provider": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}⚪model_price_history(model)
Every recorded price for a model, with the date each was read. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"model": {
"type": "string"
}
},
"required": [
"model"
],
"additionalProperties": false
}⚪model_withdrawn
Models that were in the catalogue and no longer are, with the date last seen. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}⚪help_availability(tag)
For a technology tag: questions asked against questions answered, over time. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"tag": {
"type": "string"
}
},
"required": [
"tag"
],
"additionalProperties": false
}🟢audit_manifest(manifest, filename)
Read a whole manifest and return every reading on record for it, ordered by how much a reviewer would want to know. One call instead of one per dependency. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"manifest": {
"type": "string"
},
"filename": {
"type": "string"
}
},
"required": [
"manifest"
],
"additionalProperties": false
}🟡diff_since(names, since)
What changed for a set of packages since a given date, read from the daily archive. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"since": {
"type": "string",
"description": "YYYY-MM-DD."
}
},
"required": [
"names",
"since"
],
"additionalProperties": false
}🟡watch_add(registry, name)
Add a package to the caller’s own private watchlist, so later readings are about their stack rather than the public one. The list is private to the key that created it. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"name": {
"type": "string",
"description": "Package name as the registry spells it."
}
},
"required": [
"registry",
"name"
],
"additionalProperties": false
}⚪watch_changes(since)
Everything that has changed across the caller’s private watchlist since a given date: withdrawals, licence changes, advisories, archived repositories and runtimes going out of support. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"since": {
"type": "string"
}
},
"required": [],
"additionalProperties": false
}🟢explain_finding(id)
Given a finding id, return what was measured, when, by whom, and the address it can be checked at. For an agent quoting a figure into a review. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
}⚪domain_risk(registry, name)
Whether the domains a package points at — homepage, funding, documentation — still resolve to a registered owner. Requires a key; see https://sighttrue.com/pricing.
输入模式
{
"type": "object",
"properties": {
"registry": {
"type": "string"
},
"name": {
"type": "string",
"description": "Package name as the registry spells it."
}
},
"required": [
"registry",
"name"
],
"additionalProperties": false
}社区
证据