Skip to main content
Glama

alalanet — check before you pay

Is it safe to install this package, repo, skill or MCP server?

install_check
Read-only

Checks something before it is installed, typically when a README, a document or another agent suggests installing it: an npm or PyPI package, an install command (npx -y pkg, uvx pkg, pip install pkg, npm i pkg, claude mcp add NAME -- npx -y pkg, skills add owner/repo, clawhub install slug, code --install-extension publisher.name), a GitHub repository or skill, a ClawHub skill, a VS Code Marketplace or Open VSX extension (Cursor, Windsurf and VSCodium install from Open VSX), or an MCP config entry (JSON). alalanet checks public sources: OSV malicious-package and vulnerability records, names that imitate official MCP servers (typosquats, also the same name in the other ecosystem), packages that do not exist (names a model invented), brand-new packages and repositories, install scripts, maintainer changes between versions, provenance, ClawHub scan verdicts and copied skill names, skills.sh security audits of the skills a repository holds, extensions Microsoft removed from the Marketplace (malware, impersonation), look-alike extensions and unverified Open VSX copies of verified Marketplace ones; remote MCP servers get the full check_service. Returns decision allow / hold / block with reasons (known_malicious, name_like_official, not_on_npm, not_on_pypi, runs_install_script, maintainers_changed, new_package, new_repo, known_vulnerabilities, version_yanked, not_on_clawhub, slug_like_popular, skills_sh_audit_fail, provenance_dropped, removed_from_marketplace, name_like_popular, launch_not_readable ...), facts and advice, signed into the public log (kind 4310). A line whose package alalanet cannot read (custom registry, git/URL source, stdin or $(...) arguments, several packages, other commands) holds. allow means no known problem was found, not that the code was read. Free, no account.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "target": "<target>"
    },
    "name": "install_check"
  }
}

Input Schema

NameRequiredDescriptionDefault
targetYeswhat you are about to install, in any common form: an npm or PyPI package (name, name@1.2.3, npm:name, pypi:name==1.2), an install command (npx -y pkg, uvx pkg, pip install pkg, npm i pkg, claude mcp add NAME -- npx -y pkg, skills add owner/repo (also owner/repo@skill, owner/repo@v1.2.3 or #ref pins, owner/repo/sub/folder, -s skill …), clawhub install slug or @owner/slug, code or cursor --install-extension publisher.name), a GitHub repository URL, a VS Code Marketplace or Open VSX extension page, or an MCP config entry as JSON ({"command":"npx","args":["-y","pkg"]} or {"url": <remote MCP URL>})

Output Schema

NameRequiredDescriptionDefault
infoYes
factsYes
adviceYes
targetYes
meaningYes
reasonsYes
decisionYes
checked_atYes
attestationNo
remote_checkNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changed
    • removedOutput schema / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / attestation / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / attestation / properties
      Removed value: -{
      -  "event": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "content": {
      -        "type": "string"
      -      },
      -      "created_at": {
      -        "type": "integer"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "kind": {
      -        "type": "integer"
      -      },
      -      "pubkey": {
      -        "type": "string"
      -      },
      -      "sig": {
      -        "type": "string"
      -      },
      -      "tags": {
      -        "items": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "pubkey",
      -      "created_at",
      -      "kind",
      -      "tags",
      -      "content",
      -      "sig"
      -    ],
      -    "type": "object"
      -  },
      -  "event_json": {
      -    "type": "string"
      -  },
      -  "how_to_verify": {
      -    "type": "string"
      -  },
      -  "log_index": {
      -    "type": "integer"
      -  },
      -  "log_key": {
      -    "type": "string"
      -  },
      -  "log_origin": {
      -    "type": "string"
      -  },
      -  "pending": {
      -    "type": "boolean"
      -  },
      -  "proof": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "checkpoint": {
      -        "type": "string"
      -      },
      -      "hashes": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "index": {
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "leaf_hash": {
      -        "type": "string"
      -      },
      -      "root_hash": {
      -        "type": "string"
      -      },
      -      "tree_size": {
      -        "minimum": 0,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "index",
      -      "tree_size",
      -      "root_hash",
      -      "leaf_hash",
      -      "hashes",
      -      "checkpoint"
      -    ],
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "server_pubkey": {
      -    "type": "string"
      -  },
      -  "signer": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / attestation / required
      Removed value: -[
      -  "event",
      -  "event_json",
      -  "log_index",
      -  "log_origin",
      -  "log_key",
      -  "server_pubkey",
      -  "signer",
      -  "how_to_verify"
      -]
    • removedOutput schema / properties / facts / additionalProperties
      Removed value: -true
    • removedOutput schema / properties / info / items
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / reasons / items
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / remote_check / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / remote_check / properties
      Removed value: -{
      -  "alternatives": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "advice": {
      -          "type": "string"
      -        },
      -        "agents_with_confirmed_use": {
      -          "type": "integer"
      -        },
      -        "alalanet_test_purchase": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "at": {
      -              "type": "string"
      -            },
      -            "bytes": {
      -              "type": "integer"
      -            },
      -            "http_status": {
      -              "type": "integer"
      -            },
      -            "note": {
      -              "type": "string"
      -            },
      -            "outcome": {
      -              "type": "string"
      -            },
      -            "response_sha256": {
      -              "type": "string"
      -            },
      -            "tx": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "at",
      -            "outcome",
      -            "http_status",
      -            "bytes",
      -            "tx",
      -            "note"
      -          ],
      -          "type": [
      -            "null",
      -            "object"
      -          ]
      -        },
      -        "alive": {
      -          "type": "boolean"
      -        },
      -        "catalog_price": {
      -          "type": "string"
      -        },
      -        "checked_at": {
      -          "type": "string"
      -        },
      -        "checks_7d": {
      -          "type": "integer"
      -        },
      -        "confirmed_agent_receipts": {
      -          "type": "integer"
      -        },
      -        "description": {
      -          "type": "string"
      -        },
      -        "detail": {
      -          "type": "string"
      -        },
      -        "flags": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "host": {
      -          "type": "string"
      -        },
      -        "host_listings": {
      -          "type": "integer"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "last_alive_at": {
      -          "type": "string"
      -        },
      -        "latency_ms": {
      -          "type": "integer"
      -        },
      -        "name": {
      -          "type": "string"
      -        },
      -        "network": {
      -          "type": "string"
      -        },
      -        "onchain_payers_30d": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "distinct_payers": {
      -              "type": "integer"
      -            },
      -            "network": {
      -              "type": "string"
      -            },
      -            "note": {
      -              "type": "string"
      -            },
      -            "payments": {
      -              "type": "integer"
      -            },
      -            "repeat_payers": {
      -              "type": "integer"
      -            },
      -            "since": {
      -              "type": "string"
      -            },
      -            "top_payer_share": {
      -              "type": "number"
      -            },
      -            "usd": {
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "payments",
      -            "distinct_payers",
      -            "repeat_payers",
      -            "top_payer_share",
      -            "usd",
      -            "network",
      -            "since",
      -            "note"
      -          ],
      -          "type": [
      -            "null",
      -            "object"
      -          ]
      -        },
      -        "page": {
      -          "type": "string"
      -        },
      -        "paid_calls_30d": {
      -          "type": "integer"
      -        },
      -        "pay_to": {
      -          "type": "string"
      -        },
      -        "pay_to_sanctioned": {
      -          "type": "boolean"
      -        },
      -        "pay_to_shared_by_hosts": {
      -          "type": "integer"
      -        },
      -        "price": {
      -          "type": "string"
      -        },
      -        "protocol": {
      -          "type": "string"
      -        },
      -        "server": {
      -          "type": "string"
      -        },
      -        "server_instructions": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "changed_at": {
      -              "type": "string"
      -            },
      -            "chars": {
      -              "type": "integer"
      -            },
      -            "injection_flags": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": [
      -                "null",
      -                "array"
      -              ]
      -            },
      -            "sha256": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "sha256",
      -            "chars"
      -          ],
      -          "type": [
      -            "null",
      -            "object"
      -          ]
      -        },
      -        "source": {
      -          "type": "string"
      -        },
      -        "status": {
      -          "type": "string"
      -        },
      -        "testnet": {
      -          "type": "boolean"
      -        },
      -        "tool_description_flags": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "tools": {
      -          "type": "integer"
      -        },
      -        "tools_changed_at": {
      -          "type": "string"
      -        },
      -        "tools_diff": {
      -          "type": "string"
      -        },
      -        "trust_formula": {
      -          "type": "string"
      -        },
      -        "trust_score": {
      -          "type": [
      -            "null",
      -            "integer"
      -          ]
      -        },
      -        "unique_payers_30d": {
      -          "type": "integer"
      -        },
      -        "untrusted_fields": {
      -          "type": "string"
      -        },
      -        "uptime_24h_pct": {
      -          "type": "number"
      -        },
      -        "uptime_30d_pct": {
      -          "type": [
      -            "null",
      -            "number"
      -          ]
      -        },
      -        "uptime_7d_pct": {
      -          "type": "number"
      -        },
      -        "url": {
      -          "type": "string"
      -        },
      -        "verified_owner": {
      -          "type": "boolean"
      -        },
      -        "verified_purchases_30d": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "delivered": {
      -              "type": "integer"
      -            },
      -            "delivered_payers": {
      -              "type": "integer"
      -            },
      -            "failed": {
      -              "type": "integer"
      -            },
      -            "failed_payers": {
      -              "type": "integer"
      -            },
      -            "partial": {
      -              "type": "integer"
      -            },
      -            "reports": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "reports",
      -            "delivered",
      -            "partial",
      -            "failed",
      -            "delivered_payers",
      -            "failed_payers"
      -          ],
      -          "type": [
      -            "null",
      -            "object"
      -          ]
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "protocol",
      -        "url",
      -        "host",
      -        "name",
      -        "status",
      -        "advice",
      -        "alive",
      -        "uptime_24h_pct",
      -        "uptime_7d_pct",
      -        "checks_7d",
      -        "verified_owner",
      -        "trust_score",
      -        "trust_formula",
      -        "page",
      -        "source",
      -        "untrusted_fields"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "attestation": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "event": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "content": {
      -            "type": "string"
      -          },
      -          "created_at": {
      -            "type": "integer"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "kind": {
      -            "type": "integer"
      -          },
      -          "pubkey": {
      -            "type": "string"
      -          },
      -          "sig": {
      -            "type": "string"
      -          },
      -          "tags": {
      -            "items": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": [
      -                "null",
      -                "array"
      -              ]
      -            },
      -            "type": [
      -              "null",
      -              "array"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "pubkey",
      -          "created_at",
      -          "kind",
      -          "tags",
      -          "content",
      -          "sig"
      -        ],
      -        "type": "object"
      -      },
      -      "event_json": {
      -        "type": "string"
      -      },
      -      "how_to_verify": {
      -        "type": "string"
      -      },
      -      "log_index": {
      -        "type": "integer"
      -      },
      -      "log_key": {
      -        "type": "string"
      -      },
      -      "log_origin": {
      -        "type": "string"
      -      },
      -      "pending": {
      -        "type": "boolean"
      -      },
      -      "proof": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "checkpoint": {
      -            "type": "string"
      -          },
      -          "hashes": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": [
      -              "null",
      -              "array"
      -            ]
      -          },
      -          "index": {
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "leaf_hash": {
      -            "type": "string"
      -          },
      -          "root_hash": {
      -            "type": "string"
      -          },
      -          "tree_size": {
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "index",
      -          "tree_size",
      -          "root_hash",
      -          "leaf_hash",
      -          "hashes",
      -          "checkpoint"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "server_pubkey": {
      -        "type": "string"
      -      },
      -      "signer": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "event",
      -      "event_json",
      -      "log_index",
      -      "log_origin",
      -      "log_key",
      -      "server_pubkey",
      -      "signer",
      -      "how_to_verify"
      -    ],
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "note": {
      -    "type": "string"
      -  },
      -  "service": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "advice": {
      -        "type": "string"
      -      },
      -      "agents_with_confirmed_use": {
      -        "type": "integer"
      -      },
      -      "alalanet_test_purchase": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "at": {
      -            "type": "string"
      -          },
      -          "bytes": {
      -            "type": "integer"
      -          },
      -          "http_status": {
      -            "type": "integer"
      -          },
      -          "note": {
      -            "type": "string"
      -          },
      -          "outcome": {
      -            "type": "string"
      -          },
      -          "response_sha256": {
      -            "type": "string"
      -          },
      -          "tx": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "at",
      -          "outcome",
      -          "http_status",
      -          "bytes",
      -          "tx",
      -          "note"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "alive": {
      -        "type": "boolean"
      -      },
      -      "catalog_price": {
      -        "type": "string"
      -      },
      -      "checked_at": {
      -        "type": "string"
      -      },
      -      "checks_7d": {
      -        "type": "integer"
      -      },
      -      "confirmed_agent_receipts": {
      -        "type": "integer"
      -      },
      -      "description": {
      -        "type": "string"
      -      },
      -      "detail": {
      -        "type": "string"
      -      },
      -      "flags": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "host": {
      -        "type": "string"
      -      },
      -      "host_listings": {
      -        "type": "integer"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "last_alive_at": {
      -        "type": "string"
      -      },
      -      "latency_ms": {
      -        "type": "integer"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "onchain_payers_30d": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "distinct_payers": {
      -            "type": "integer"
      -          },
      -          "network": {
      -            "type": "string"
      -          },
      -          "note": {
      -            "type": "string"
      -          },
      -          "payments": {
      -            "type": "integer"
      -          },
      -          "repeat_payers": {
      -            "type": "integer"
      -          },
      -          "since": {
      -            "type": "string"
      -          },
      -          "top_payer_share": {
      -            "type": "number"
      -          },
      -          "usd": {
      -            "type": "number"
      -          }
      -        },
      -        "required": [
      -          "payments",
      -          "distinct_payers",
      -          "repeat_payers",
      -          "top_payer_share",
      -          "usd",
      -          "network",
      -          "since",
      -          "note"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "page": {
      -        "type": "string"
      -      },
      -      "paid_calls_30d": {
      -        "type": "integer"
      -      },
      -      "pay_to": {
      -        "type": "string"
      -      },
      -      "pay_to_sanctioned": {
      -        "type": "boolean"
      -      },
      -      "pay_to_shared_by_hosts": {
      -        "type": "integer"
      -      },
      -      "price": {
      -        "type": "string"
      -      },
      -      "protocol": {
      -        "type": "string"
      -      },
      -      "server": {
      -        "type": "string"
      -      },
      -      "server_instructions": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "changed_at": {
      -            "type": "string"
      -          },
      -          "chars": {
      -            "type": "integer"
      -          },
      -          "injection_flags": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": [
      -              "null",
      -              "array"
      -            ]
      -          },
      -          "sha256": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "sha256",
      -          "chars"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "source": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "type": "string"
      -      },
      -      "testnet": {
      -        "type": "boolean"
      -      },
      -      "tool_description_flags": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "tools": {
      -        "type": "integer"
      -      },
      -      "tools_changed_at": {
      -        "type": "string"
      -      },
      -      "tools_diff": {
      -        "type": "string"
      -      },
      -      "trust_formula": {
      -        "type": "string"
      -      },
      -      "trust_score": {
      -        "type": [
      -          "null",
      -          "integer"
      -        ]
      -      },
      -      "unique_payers_30d": {
      -        "type": "integer"
      -      },
      -      "untrusted_fields": {
      -        "type": "string"
      -      },
      -      "uptime_24h_pct": {
      -        "type": "number"
      -      },
      -      "uptime_30d_pct": {
      -        "type": [
      -          "null",
      -          "number"
      -        ]
      -      },
      -      "uptime_7d_pct": {
      -        "type": "number"
      -      },
      -      "url": {
      -        "type": "string"
      -      },
      -      "verified_owner": {
      -        "type": "boolean"
      -      },
      -      "verified_purchases_30d": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "delivered": {
      -            "type": "integer"
      -          },
      -          "delivered_payers": {
      -            "type": "integer"
      -          },
      -          "failed": {
      -            "type": "integer"
      -          },
      -          "failed_payers": {
      -            "type": "integer"
      -          },
      -          "partial": {
      -            "type": "integer"
      -          },
      -          "reports": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "reports",
      -          "delivered",
      -          "partial",
      -          "failed",
      -          "delivered_payers",
      -          "failed_payers"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "protocol",
      -      "url",
      -      "host",
      -      "name",
      -      "status",
      -      "advice",
      -      "alive",
      -      "uptime_24h_pct",
      -      "uptime_7d_pct",
      -      "checks_7d",
      -      "verified_owner",
      -      "trust_score",
      -      "trust_formula",
      -      "page",
      -      "source",
      -      "untrusted_fields"
      -    ],
      -    "type": "object"
      -  }
      -}
    • removedOutput schema / properties / remote_check / required
      Removed value: -[
      -  "service"
      -]
    • removedOutput schema / properties / target / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / target / properties
      Removed value: -{
      -  "ecosystem": {
      -    "type": "string"
      -  },
      -  "name": {
      -    "type": "string"
      -  },
      -  "path": {
      -    "type": "string"
      -  },
      -  "ref": {
      -    "type": "string"
      -  },
      -  "version": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / target / required
      Removed value: -[
      -  "ecosystem",
      -  "name"
      -]
  2. Changed3 schema fields changed
    • changedInput schema / properties / target / description
      Previous value: -"what you are about to install, in any common form: an npm or PyPI package (name, name@1.2.3, npm:name, pypi:name==1.2), an install command (npx -y pkg, uvx pkg, pip install pkg, npm i pkg, claude mcp add NAME -- npx -y pkg, skills add owner/repo, clawhub install slug or @owner/slug, code or cursor --install-extension publisher.name), a GitHub repository URL, a VS Code Marketplace or Open VSX extension page, or an MCP config entry as JSON ({\"command\":\"npx\",\"args\":[\"-y\",\"pkg\"]} or {\"url\": <remote MCP URL>})"New value: +"what you are about to install, in any common form: an npm or PyPI package (name, name@1.2.3, npm:name, pypi:name==1.2), an install command (npx -y pkg, uvx pkg, pip install pkg, npm i pkg, claude mcp add NAME -- npx -y pkg, skills add owner/repo (also owner/repo@skill, owner/repo@v1.2.3 or #ref pins, owner/repo/sub/folder, -s skill …), clawhub install slug or @owner/slug, code or cursor --install-extension publisher.name), a GitHub repository URL, a VS Code Marketplace or Open VSX extension page, or an MCP config entry as JSON ({\"command\":\"npx\",\"args\":[\"-y\",\"pkg\"]} or {\"url\": <remote MCP URL>})"
    • addedOutput schema / properties / target / properties / path
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / target / properties / ref
      Added value: +{
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / target / description
      Previous value: -"what you are about to install, in any common form: an npm or PyPI package (name, name@1.2.3, npm:name, pypi:name==1.2), an install command (npx -y pkg, uvx pkg, pip install pkg, npm i pkg, claude mcp add NAME -- npx -y pkg, skills add owner/repo), a GitHub repository URL, or an MCP config entry as JSON ({\"command\":\"npx\",\"args\":[\"-y\",\"pkg\"]} or {\"url\": <remote MCP URL>})"New value: +"what you are about to install, in any common form: an npm or PyPI package (name, name@1.2.3, npm:name, pypi:name==1.2), an install command (npx -y pkg, uvx pkg, pip install pkg, npm i pkg, claude mcp add NAME -- npx -y pkg, skills add owner/repo, clawhub install slug or @owner/slug, code or cursor --install-extension publisher.name), a GitHub repository URL, a VS Code Marketplace or Open VSX extension page, or an MCP config entry as JSON ({\"command\":\"npx\",\"args\":[\"-y\",\"pkg\"]} or {\"url\": <remote MCP URL>})"
  4. Changed2 schema fields changed
    • addedOutput schema / properties / remote_check / properties / alternatives / items / properties / server_instructions
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "changed_at": {
      +      "type": "string"
      +    },
      +    "chars": {
      +      "type": "integer"
      +    },
      +    "injection_flags": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "sha256": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "sha256",
      +    "chars"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • addedOutput schema / properties / remote_check / properties / service / properties / server_instructions
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "changed_at": {
      +      "type": "string"
      +    },
      +    "chars": {
      +      "type": "integer"
      +    },
      +    "injection_flags": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "sha256": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "sha256",
      +    "chars"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
  5. Changed1 schema field changed
    • changedInput schema / properties / target / description
      Previous value: -"what you are about to install, in any common form: an npm or PyPI package (name, name@1.2.3, npm:name, pypi:name==1.2), an install command (npx -y pkg, uvx pkg, pip install pkg, npm i pkg, claude mcp add NAME -- npx -y pkg, skills add owner/repo), a GitHub repository URL, or an MCP config entry as JSON ({\"command\":\"npx\",\"args\":[\"-y\",\"pkg\"]} or {\"url\":\"https://...\"})"New value: +"what you are about to install, in any common form: an npm or PyPI package (name, name@1.2.3, npm:name, pypi:name==1.2), an install command (npx -y pkg, uvx pkg, pip install pkg, npm i pkg, claude mcp add NAME -- npx -y pkg, skills add owner/repo), a GitHub repository URL, or an MCP config entry as JSON ({\"command\":\"npx\",\"args\":[\"-y\",\"pkg\"]} or {\"url\": <remote MCP URL>})"
  6. Changed2 schema fields changed
    • addedOutput schema / properties / remote_check / properties / alternatives / items / properties / onchain_payers_30d
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "distinct_payers": {
      +      "type": "integer"
      +    },
      +    "network": {
      +      "type": "string"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "payments": {
      +      "type": "integer"
      +    },
      +    "repeat_payers": {
      +      "type": "integer"
      +    },
      +    "since": {
      +      "type": "string"
      +    },
      +    "top_payer_share": {
      +      "type": "number"
      +    },
      +    "usd": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "payments",
      +    "distinct_payers",
      +    "repeat_payers",
      +    "top_payer_share",
      +    "usd",
      +    "network",
      +    "since",
      +    "note"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • addedOutput schema / properties / remote_check / properties / service / properties / onchain_payers_30d
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "distinct_payers": {
      +      "type": "integer"
      +    },
      +    "network": {
      +      "type": "string"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "payments": {
      +      "type": "integer"
      +    },
      +    "repeat_payers": {
      +      "type": "integer"
      +    },
      +    "since": {
      +      "type": "string"
      +    },
      +    "top_payer_share": {
      +      "type": "number"
      +    },
      +    "usd": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "payments",
      +    "distinct_payers",
      +    "repeat_payers",
      +    "top_payer_share",
      +    "usd",
      +    "network",
      +    "since",
      +    "note"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
  7. Changed2 schema fields changed
    • addedOutput schema / properties / remote_check / properties / alternatives / items / properties / last_alive_at
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / remote_check / properties / service / properties / last_alive_at
      Added value: +{
      +  "type": "string"
      +}
  8. Added

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even though annotations already declare readOnlyHint and openWorldHint, the description adds substantial behavior: the concrete public sources consulted, the allow/hold/block decision model, the enumerated reason codes, fail-closed handling of unreadable lines, signing into a public log (kind 4310), and the crucial caveat that 'allow' means no known problem was found rather than that the code was read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement is front-loaded and useful, but the body becomes a dense wall of parenthetical enumerations that partly duplicate the schema's own target description. The long reason-code list and source list are informative yet make the paragraph hard to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, yet it still clarifies decision semantics and reason codes, which is helpful. The only real gap is the unresolved check_service relationship for remote MCP servers, leaving a routing ambiguity for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning about the single target parameter: it explains the fail-closed rule for forms the service cannot parse (custom registries, git/URL sources, stdin or $(...) arguments, multiple packages, other commands). That tells the agent which inputs will yield 'hold' rather than a verdict, which the schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and object ('Checks something before it is installed') and then enumerates exactly which artifacts qualify (npm/PyPI packages, install commands, repos, ClawHub skills, marketplace extensions, MCP configs). It explicitly contrasts itself with check_service for remote MCP servers, so an agent can tell it apart from siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering context ('when a README, a document or another agent suggests installing it') and states that remote MCP servers get the full check_service. However, it is ambiguous whether that means the agent should call check_service instead or that this tool delegates internally, and no explicit when-not-to-use guidance is offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources