schema.json 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. {
  2. "type": "object",
  3. "required": [
  4. "passes",
  5. "summary",
  6. "violations",
  7. "may_make_external_network_calls",
  8. "may_download_additional_software",
  9. "hooks",
  10. "has_broad_scope_hooks",
  11. "has_undisclosed_telemetry",
  12. "description_matches_behavior"
  13. ],
  14. "additionalProperties": true,
  15. "properties": {
  16. "passes": {
  17. "type": "boolean",
  18. "description": "true only if the plugin is safe AND has no broad-scope hooks AND has no undisclosed telemetry AND its description matches its behavior."
  19. },
  20. "summary": {
  21. "type": "string",
  22. "description": "Brief description of what the plugin does."
  23. },
  24. "violations": {
  25. "type": "string",
  26. "description": "Specific files/hooks and issues, or empty string if none. When passes=false this MUST cite the file/hook and state what the user was not told."
  27. },
  28. "may_make_external_network_calls": {
  29. "type": "boolean"
  30. },
  31. "may_download_additional_software": {
  32. "type": "boolean"
  33. },
  34. "hooks": {
  35. "type": "array",
  36. "items": { "type": "string" },
  37. "description": "One string per registered hook: 'EVENT:path — gated|ungated — network:yes(host)|no'. Empty array if the plugin registers no hooks."
  38. },
  39. "has_broad_scope_hooks": {
  40. "type": "boolean",
  41. "description": "true if any UserPromptSubmit/PreToolUse/PostToolUse hook runs without a project-relevance gate, or any hook reads user data beyond the plugin's stated scope."
  42. },
  43. "has_undisclosed_telemetry": {
  44. "type": "boolean",
  45. "description": "true if any hook or shipped code makes an outbound network call to a non-MCP host without explicit disclosure + opt-out in the description/README."
  46. },
  47. "description_matches_behavior": {
  48. "type": "boolean",
  49. "description": "false if a user reading only the plugin.json description would be surprised by the hooks/telemetry/data-access the plugin actually performs."
  50. }
  51. }
  52. }