Use this checklist before release and before enabling new tools.
- Verify no raw SQL fragments are accepted from client payloads.
- Verify TV filtering uses structured allowlisted operators/casts only.
- Verify
evo.model.listfilters use structuredfilters.where[]with per-model field allowlist. - Verify depth/limit/offset and payload/result caps are enforced.
- Verify no direct model
toArray()is returned without sanitizer for public tools. - Verify model field exposure uses explicit per-model allowlist projection.
- Verify sensitive fields are always excluded:
password,cachepwd,verified_key,refresh_token,access_token,sessionid. - Verify write-tools stay disabled unless triple gate is satisfied: feature flag + ACL + scope.
- Verify request/response logging runs through redactor before write.
- Verify no raw request body is logged before redaction.
- Verify audit events always include
trace_id, actor context, and status.
- Verify manager ACL is deny-by-default (
emcprequired). - Verify API scopes are enforced (
mcp:read|call|admin). - Verify middleware
401/403responses follow the standard error format. - Verify tool registration enforces namespace governance (
evo.*reserved for core, third-party onlyvendor.domain.*).
- Verify idempotency dedup works for identical payloads.
- Verify conflicting payload with same idempotency key returns HTTP
409. - Verify async payload propagates
trace_idand actor fields.
- Verify upstream
laravel/mcpversion is within supported window. - Verify alias/interception regression tests pass.
- Verify boot fails fast with actionable message if interception fails.