Skip to main content
Glama

Check installed packages against advisories

forge_exposure
Read-onlyIdempotent

Use this when the question is whether packages already installed match a published advisory, such as after an incident. Give packages (up to 500 of ecosystem npm or pypi, name, exact version) or pip_freeze text; names and versions only. Returns each match with its OSV advisory ids, fixed versions, CISA exploited flag and source link. One tool's field reports and advisories: forge_check.

Input Schema

NameRequiredDescriptionDefault
detailNocompact (default): up to 20 matches, exploited in the wild and malicious first; full: every match
packagesNoInstalled packages: ecosystem npm or pypi, name and exact version
pip_freezeNoOr pip freeze output; only name==version lines are read

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "checked": {
      -        "type": "number"
      -      },
      -      "checked_at": {
      -        "type": "string"
      -      },
      -      "full_answer_arguments": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "detail": {
      -            "const": "full",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "detail"
      -        ],
      -        "type": "object"
      -      },
      -      "items": {
      -        "type": "number"
      -      },
      -      "kev_as_of": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "matched": {
      -        "type": "number"
      -      },
      -      "matches": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "advisories": {
      -              "items": {
      -                "additionalProperties": {},
      -                "properties": {
      -                  "aliases": {
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "exploited_in_wild": {
      -                    "type": "boolean"
      -                  },
      -                  "fixed": {
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "id": {
      -                    "type": "string"
      -                  },
      -                  "kind": {
      -                    "enum": [
      -                      "malicious",
      -                      "vulnerability"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "url": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "id",
      -                  "kind",
      -                  "aliases",
      -                  "fixed",
      -                  "url"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "ecosystem": {
      -              "enum": [
      -                "npm",
      -                "pypi"
      -              ],
      -              "type": "string"
      -            },
      -            "line": {
      -              "type": "string"
      -            },
      -            "package": {
      -              "type": "string"
      -            },
      -            "status": {
      -              "enum": [
      -                "flagged",
      -                "caution"
      -              ],
      -              "type": "string"
      -            },
      -            "version": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "package",
      -            "ecosystem",
      -            "version",
      -            "status",
      -            "line",
      -            "advisories"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "not_checked": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "ecosystem": {
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "version": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "ecosystem",
      -            "name",
      -            "version"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "related": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "arguments": {
      -              "additionalProperties": {},
      -              "propertyNames": {
      -                "type": "string"
      -              },
      -              "type": "object"
      -            },
      -            "mcp_server": {
      -              "type": "string"
      -            },
      -            "relation": {
      -              "enum": [
      -                "full_answer",
      -                "scan_skill_file",
      -                "candidate",
      -                "watch_fingerprint",
      -                "check_match",
      -                "rescan"
      -              ],
      -              "type": "string"
      -            },
      -            "tool": {
      -              "enum": [
      -                "forge_check",
      -                "forge_scan",
      -                "forge_watch"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "relation",
      -            "tool",
      -            "arguments"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "share": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "receipt_badge_url": {
      -            "type": "string"
      -          },
      -          "receipt_markdown": {
      -            "type": "string"
      -          },
      -          "receipt_url": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "receipt_url"
      -        ],
      -        "type": "object"
      -      },
      -      "shown": {
      -        "type": "number"
      -      },
      -      "source": {
      -        "const": "osv",
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "const": true,
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "source",
      -      "checked_at",
      -      "kev_as_of",
      -      "items",
      -      "checked",
      -      "matched",
      -      "not_checked",
      -      "matches",
      -      "share"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "data_kind": {
      -        "const": "input_needed",
      -        "type": "string"
      -      },
      -      "detail": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "error": {
      -        "type": "string"
      -      },
      -      "examples": {
      -        "items": {
      -          "additionalProperties": {},
      -          "propertyNames": {
      -            "type": "string"
      -          },
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "needed": {
      -        "type": "string"
      -      },
      -      "tool": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "data_kind",
      -      "tool",
      -      "needed",
      -      "detail",
      -      "examples"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "error": {
      -        "const": "rate_limited",
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "retry_after_s"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "checked": {
      +        "type": "number"
      +      },
      +      "checked_at": {
      +        "type": "string"
      +      },
      +      "full_answer_arguments": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "detail": {
      +            "const": "full",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "detail"
      +        ],
      +        "type": "object"
      +      },
      +      "items": {
      +        "type": "number"
      +      },
      +      "kev_as_of": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "matched": {
      +        "type": "number"
      +      },
      +      "matches": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "advisories": {
      +              "items": {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "aliases": {
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "exploited_in_wild": {
      +                    "type": "boolean"
      +                  },
      +                  "fixed": {
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "kind": {
      +                    "enum": [
      +                      "malicious",
      +                      "vulnerability"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "url": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "kind",
      +                  "aliases",
      +                  "fixed",
      +                  "url"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "ecosystem": {
      +              "enum": [
      +                "npm",
      +                "pypi"
      +              ],
      +              "type": "string"
      +            },
      +            "line": {
      +              "type": "string"
      +            },
      +            "package": {
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "flagged",
      +                "caution"
      +              ],
      +              "type": "string"
      +            },
      +            "version": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "package",
      +            "ecosystem",
      +            "version",
      +            "status",
      +            "line",
      +            "advisories"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "not_checked": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "ecosystem": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "version": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "ecosystem",
      +            "name",
      +            "version"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "related": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "arguments": {
      +              "additionalProperties": {},
      +              "propertyNames": {
      +                "type": "string"
      +              },
      +              "type": "object"
      +            },
      +            "mcp_server": {
      +              "type": "string"
      +            },
      +            "relation": {
      +              "enum": [
      +                "full_answer",
      +                "scan_skill_file",
      +                "candidate",
      +                "watch_fingerprint",
      +                "check_match",
      +                "rescan"
      +              ],
      +              "type": "string"
      +            },
      +            "tool": {
      +              "enum": [
      +                "forge_check",
      +                "forge_scan",
      +                "forge_watch"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "relation",
      +            "tool",
      +            "arguments"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "share": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "receipt_badge_url": {
      +            "type": "string"
      +          },
      +          "receipt_markdown": {
      +            "type": "string"
      +          },
      +          "receipt_url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "receipt_url"
      +        ],
      +        "type": "object"
      +      },
      +      "shown": {
      +        "type": "number"
      +      },
      +      "source": {
      +        "const": "osv",
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "const": true,
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "checked_at",
      +      "kev_as_of",
      +      "items",
      +      "checked",
      +      "matched",
      +      "not_checked",
      +      "matches",
      +      "share"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "data_kind": {
      +        "const": "input_needed",
      +        "type": "string"
      +      },
      +      "detail": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "examples": {
      +        "items": {
      +          "additionalProperties": {},
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "needed": {
      +        "type": "string"
      +      },
      +      "tool": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "data_kind",
      +      "tool",
      +      "needed",
      +      "detail",
      +      "examples"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "error": {
      +        "const": "rate_limited",
      +        "type": "string"
      +      },
      +      "limit": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "per_minute": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "per_month": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "plan": {
      +            "enum": [
      +              "anonymous",
      +              "free",
      +              "team",
      +              "volume",
      +              "enterprise"
      +            ],
      +            "type": "string"
      +          },
      +          "resets_at": {
      +            "type": "string"
      +          },
      +          "used_this_month": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "plan",
      +          "per_minute"
      +        ],
      +        "type": "object"
      +      },
      +      "reason": {
      +        "enum": [
      +          "per_ip_minute",
      +          "per_key_minute",
      +          "monthly_quota"
      +        ],
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      },
      +      "upgrade": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "contact": {
      +            "type": "string"
      +          },
      +          "free_key": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "per_minute": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "per_month": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "per_minute",
      +              "per_month"
      +            ],
      +            "type": "object"
      +          },
      +          "keys_url": {
      +            "type": "string"
      +          },
      +          "paid_plans": {
      +            "enum": [
      +              "coming_soon",
      +              "available"
      +            ],
      +            "type": "string"
      +          },
      +          "plans": {
      +            "items": {
      +              "enum": [
      +                "team",
      +                "volume"
      +              ],
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "url",
      +          "keys_url",
      +          "plans",
      +          "paid_plans"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "retry_after_s"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed2 schema fields changed
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "compact (default): up to 20 matches, exploited in the wild and malicious first; full: every match",
      +  "enum": [
      +    "compact",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "checked": {
      -        "type": "number"
      -      },
      -      "checked_at": {
      -        "type": "string"
      -      },
      -      "items": {
      -        "type": "number"
      -      },
      -      "kev_as_of": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "matched": {
      -        "type": "number"
      -      },
      -      "matches": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "advisories": {
      -              "items": {
      -                "additionalProperties": {},
      -                "properties": {
      -                  "aliases": {
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "exploited_in_wild": {
      -                    "type": "boolean"
      -                  },
      -                  "fixed": {
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "id": {
      -                    "type": "string"
      -                  },
      -                  "kind": {
      -                    "enum": [
      -                      "malicious",
      -                      "vulnerability"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "url": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "id",
      -                  "kind",
      -                  "aliases",
      -                  "fixed",
      -                  "url"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "ecosystem": {
      -              "enum": [
      -                "npm",
      -                "pypi"
      -              ],
      -              "type": "string"
      -            },
      -            "line": {
      -              "type": "string"
      -            },
      -            "package": {
      -              "type": "string"
      -            },
      -            "status": {
      -              "enum": [
      -                "flagged",
      -                "caution"
      -              ],
      -              "type": "string"
      -            },
      -            "version": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "package",
      -            "ecosystem",
      -            "version",
      -            "status",
      -            "line",
      -            "advisories"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "not_checked": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "ecosystem": {
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "version": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "ecosystem",
      -            "name",
      -            "version"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "related": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "arguments": {
      -              "additionalProperties": {},
      -              "propertyNames": {
      -                "type": "string"
      -              },
      -              "type": "object"
      -            },
      -            "mcp_server": {
      -              "type": "string"
      -            },
      -            "relation": {
      -              "enum": [
      -                "full_answer",
      -                "scan_skill_file",
      -                "candidate",
      -                "watch_fingerprint",
      -                "check_match",
      -                "rescan"
      -              ],
      -              "type": "string"
      -            },
      -            "tool": {
      -              "enum": [
      -                "forge_check",
      -                "forge_scan",
      -                "forge_watch"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "relation",
      -            "tool",
      -            "arguments"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "share": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "receipt_badge_url": {
      -            "type": "string"
      -          },
      -          "receipt_markdown": {
      -            "type": "string"
      -          },
      -          "receipt_url": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "receipt_url"
      -        ],
      -        "type": "object"
      -      },
      -      "source": {
      -        "const": "osv",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "source",
      -      "checked_at",
      -      "kev_as_of",
      -      "items",
      -      "checked",
      -      "matched",
      -      "not_checked",
      -      "matches",
      -      "share"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "data_kind": {
      -        "const": "input_needed",
      -        "type": "string"
      -      },
      -      "detail": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "error": {
      -        "type": "string"
      -      },
      -      "examples": {
      -        "items": {
      -          "additionalProperties": {},
      -          "propertyNames": {
      -            "type": "string"
      -          },
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "needed": {
      -        "type": "string"
      -      },
      -      "tool": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "data_kind",
      -      "tool",
      -      "needed",
      -      "detail",
      -      "examples"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "error": {
      -        "const": "rate_limited",
      -        "type": "string"
      -      },
      -      "retry_after_s": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "retry_after_s"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "checked": {
      +        "type": "number"
      +      },
      +      "checked_at": {
      +        "type": "string"
      +      },
      +      "full_answer_arguments": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "detail": {
      +            "const": "full",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "detail"
      +        ],
      +        "type": "object"
      +      },
      +      "items": {
      +        "type": "number"
      +      },
      +      "kev_as_of": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "matched": {
      +        "type": "number"
      +      },
      +      "matches": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "advisories": {
      +              "items": {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "aliases": {
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "exploited_in_wild": {
      +                    "type": "boolean"
      +                  },
      +                  "fixed": {
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "kind": {
      +                    "enum": [
      +                      "malicious",
      +                      "vulnerability"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "url": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "kind",
      +                  "aliases",
      +                  "fixed",
      +                  "url"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "ecosystem": {
      +              "enum": [
      +                "npm",
      +                "pypi"
      +              ],
      +              "type": "string"
      +            },
      +            "line": {
      +              "type": "string"
      +            },
      +            "package": {
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "flagged",
      +                "caution"
      +              ],
      +              "type": "string"
      +            },
      +            "version": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "package",
      +            "ecosystem",
      +            "version",
      +            "status",
      +            "line",
      +            "advisories"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "not_checked": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "ecosystem": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "version": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "ecosystem",
      +            "name",
      +            "version"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "related": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "arguments": {
      +              "additionalProperties": {},
      +              "propertyNames": {
      +                "type": "string"
      +              },
      +              "type": "object"
      +            },
      +            "mcp_server": {
      +              "type": "string"
      +            },
      +            "relation": {
      +              "enum": [
      +                "full_answer",
      +                "scan_skill_file",
      +                "candidate",
      +                "watch_fingerprint",
      +                "check_match",
      +                "rescan"
      +              ],
      +              "type": "string"
      +            },
      +            "tool": {
      +              "enum": [
      +                "forge_check",
      +                "forge_scan",
      +                "forge_watch"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "relation",
      +            "tool",
      +            "arguments"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "share": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "receipt_badge_url": {
      +            "type": "string"
      +          },
      +          "receipt_markdown": {
      +            "type": "string"
      +          },
      +          "receipt_url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "receipt_url"
      +        ],
      +        "type": "object"
      +      },
      +      "shown": {
      +        "type": "number"
      +      },
      +      "source": {
      +        "const": "osv",
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "const": true,
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "checked_at",
      +      "kev_as_of",
      +      "items",
      +      "checked",
      +      "matched",
      +      "not_checked",
      +      "matches",
      +      "share"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "data_kind": {
      +        "const": "input_needed",
      +        "type": "string"
      +      },
      +      "detail": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "examples": {
      +        "items": {
      +          "additionalProperties": {},
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "needed": {
      +        "type": "string"
      +      },
      +      "tool": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "data_kind",
      +      "tool",
      +      "needed",
      +      "detail",
      +      "examples"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "error": {
      +        "const": "rate_limited",
      +        "type": "string"
      +      },
      +      "retry_after_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "retry_after_s"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "checked": {
      +          "type": "number"
      +        },
      +        "checked_at": {
      +          "type": "string"
      +        },
      +        "items": {
      +          "type": "number"
      +        },
      +        "kev_as_of": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "matched": {
      +          "type": "number"
      +        },
      +        "matches": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "advisories": {
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "aliases": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "exploited_in_wild": {
      +                      "type": "boolean"
      +                    },
      +                    "fixed": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "id": {
      +                      "type": "string"
      +                    },
      +                    "kind": {
      +                      "enum": [
      +                        "malicious",
      +                        "vulnerability"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "url": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "kind",
      +                    "aliases",
      +                    "fixed",
      +                    "url"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "ecosystem": {
      +                "enum": [
      +                  "npm",
      +                  "pypi"
      +                ],
      +                "type": "string"
      +              },
      +              "line": {
      +                "type": "string"
      +              },
      +              "package": {
      +                "type": "string"
      +              },
      +              "status": {
      +                "enum": [
      +                  "flagged",
      +                  "caution"
      +                ],
      +                "type": "string"
      +              },
      +              "version": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "package",
      +              "ecosystem",
      +              "version",
      +              "status",
      +              "line",
      +              "advisories"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "not_checked": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "ecosystem": {
      +                "type": "string"
      +              },
      +              "name": {
      +                "type": "string"
      +              },
      +              "version": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "ecosystem",
      +              "name",
      +              "version"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "related": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "arguments": {
      +                "additionalProperties": {},
      +                "propertyNames": {
      +                  "type": "string"
      +                },
      +                "type": "object"
      +              },
      +              "mcp_server": {
      +                "type": "string"
      +              },
      +              "relation": {
      +                "enum": [
      +                  "full_answer",
      +                  "scan_skill_file",
      +                  "candidate",
      +                  "watch_fingerprint",
      +                  "check_match",
      +                  "rescan"
      +                ],
      +                "type": "string"
      +              },
      +              "tool": {
      +                "enum": [
      +                  "forge_check",
      +                  "forge_scan",
      +                  "forge_watch"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "relation",
      +              "tool",
      +              "arguments"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "share": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "receipt_badge_url": {
      +              "type": "string"
      +            },
      +            "receipt_markdown": {
      +              "type": "string"
      +            },
      +            "receipt_url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "receipt_url"
      +          ],
      +          "type": "object"
      +        },
      +        "source": {
      +          "const": "osv",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "source",
      +        "checked_at",
      +        "kev_as_of",
      +        "items",
      +        "checked",
      +        "matched",
      +        "not_checked",
      +        "matches",
      +        "share"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "data_kind": {
      +          "const": "input_needed",
      +          "type": "string"
      +        },
      +        "detail": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "error": {
      +          "type": "string"
      +        },
      +        "examples": {
      +          "items": {
      +            "additionalProperties": {},
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "needed": {
      +          "type": "string"
      +        },
      +        "tool": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "error",
      +        "data_kind",
      +        "tool",
      +        "needed",
      +        "detail",
      +        "examples"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "error": {
      +          "const": "rate_limited",
      +          "type": "string"
      +        },
      +        "retry_after_s": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "error",
      +        "retry_after_s"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "type": "object"
      +}
  4. Added

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered; the description adds substance the annotations do not: a 500-package ceiling, that only names and exact versions are consumed, and that matches carry OSV ids, fixed versions, a CISA exploited flag and a source link. The one gap is that default-vs-full result truncation lives only in the schema, not the prose.

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

Conciseness4/5

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

Three sentences, front-loaded with the decision condition before the input mechanics and the return summary. The trailing 'One tool's field reports and advisories: forge_check.' is telegraphic to the point of ambiguity, costing a little clarity in an otherwise tight definition.

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 and full annotation coverage, an agent has what it needs: trigger condition, accepted input shapes, result fields and the sibling to prefer. The remaining soft spot is guidance on when to choose detail=full versus the default, which is left entirely to the schema.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all three parameters, including the compact/full enum and the maxItems cap. The description's restatement of 'ecosystem npm or pypi, name, exact version' and 'up to 500' duplicates structured data and adds no format or validation detail beyond it. Baseline 3 applies.

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?

The first clause names a precise verb+resource: checking whether already-installed packages match a published advisory. It distinguishes the operation from project scanning and from single-tool reporting, and the final sentence explicitly separates it from forge_check. An agent can route correctly without opening either 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?

"Use this when the question is whether packages already installed match a published advisory, such as after an incident" gives a concrete triggering condition, and "One tool's field reports and advisories: forge_check" points at the nearest alternative. It stops short of an explicit exclusion (e.g. 'not for scanning a repo/lockfile – use forge_scan'), leaving the other siblings to inference.

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.