{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://bowtiekreative.example/schemas/laka-security/tool-registry.schema.json","title":"LAKA Security Tool Registry","type":"object","additionalProperties":false,"required":["registry_id","version","default_policy","tools"],"properties":{"registry_id":{"type":"string"},"version":{"type":"string"},"default_policy":{"type":"object","additionalProperties":false,"required":["unknown_tool","unregistered_version","active_mode","mutating_mode"],"properties":{"unknown_tool":{"enum":["deny","plan-only"]},"unregistered_version":{"enum":["deny","plan-only"]},"active_mode":{"enum":["deny","separate-approval","allow"]},"mutating_mode":{"enum":["deny","separate-approval","allow"]}}},"tools":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["tool_id","category","execution_plane","allowed_modes","target_types","network_effect","mutation","allow_by_default","required_gates","constraints","evidence_outputs","forbidden_capabilities"],"properties":{"tool_id":{"type":"string"},"category":{"type":"string"},"source":{"type":"string"},"version_policy":{"type":"string"},"execution_plane":{"enum":["knowledge","observe","prove","change"]},"allowed_modes":{"type":"array","minItems":1,"items":{"enum":["inventory","passive","audit","active","change","containment","recovery"]}},"target_types":{"type":"array","minItems":1,"items":{"type":"string"}},"required_privileges":{"type":"array","items":{"type":"string"}},"network_effect":{"enum":["none","passive-receive","bounded-requests","active-payloads"]},"mutation":{"enum":["none","test-data-only","configuration","containment","recovery"]},"allow_by_default":{"type":"boolean"},"required_gates":{"type":"array","items":{"type":"string"}},"constraints":{"type":"array","items":{"type":"string"}},"evidence_outputs":{"type":"array","items":{"type":"string"}},"forbidden_capabilities":{"type":"array","items":{"type":"string"}},"parser":{"type":"string"},"timeout_seconds":{"type":"integer","minimum":1},"concurrency":{"type":"integer","minimum":1}}}}}}