{"serverId":"mcp-registry/io.sunaivacore/gate","tools":[{"name":"add_custom_rule","fixed":{"name":"add_custom_rule","description":"Create a custom detection rule in the backend. Requires API key (Pro+).","inputSchema":{"type":"object","required":["name","description","detection_pattern","severity"],"properties":{"name":{"type":"string","description":"Rule name"},"tier":{"type":"string","description":"Optional tier restriction"},"severity":{"enum":["block","warn"],"type":"string","description":"Severity on match"},"description":{"type":"string","description":"Rule description (required — the backend 400s on a missing/empty description)"},"detection_pattern":{"type":"string","description":"Compiled regex detection pattern (required — the backend 400s on a missing/empty detection_pattern). There is no 'pattern' field: 'detection_pattern' is the only field name the evaluator reads; the backend explicitly rejects 'pattern'."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":236,"tokensAfter":236},{"name":"delete_custom_rule","fixed":{"name":"delete_custom_rule","description":"Delete a custom rule. Requires API key (Pro+).","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Rule ID to delete"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":60,"tokensAfter":60},{"name":"get_audit_log","fixed":{"name":"get_audit_log","description":"View recent gate decisions — blocks, warnings, passes, and bypasses.","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Max entries to return (default 50)"},"rule_id":{"type":"string","description":"Accepted for forward-compatibility but NOT applied server-side — the backend only honors limit/cursor. Filter the returned entries client-side."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":117,"tokensAfter":117},{"name":"get_rule_modes","fixed":{"name":"get_rule_modes","description":"List all enforcement-mode overrides configured for the authenticated customer. Requires an account (Dev+).","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":55,"tokensAfter":55},{"name":"get_rules","fixed":{"name":"get_rules","description":"List active validation rules — the customer's TRUE enforced set (constitutional + recommended-default metadata on dev tier, all 69 premium rules on pro+). `category`/`preset` filter args are accepted but not applied server-side.","inputSchema":{"type":"object","properties":{"preset":{"type":"string","description":"Filter by preset name"},"category":{"type":"string","description":"Filter by category"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":123,"tokensAfter":123},{"name":"list_custom_rules","fixed":{"name":"list_custom_rules","description":"List all custom rules for the authenticated customer. Requires API key (Pro+).","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":48,"tokensAfter":48},{"name":"list_presets","fixed":{"name":"list_presets","description":"List available rule preset bundles. Requires API key (Dev+).","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":42,"tokensAfter":42},{"name":"reset_rule_mode","fixed":{"name":"reset_rule_mode","description":"Remove a mode override for a rule, reverting it to its default enforcement mode. Requires API key (Pro+).","inputSchema":{"type":"object","required":["rule_id"],"properties":{"rule_id":{"type":"string","description":"Rule ID whose override to remove"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":82,"tokensAfter":82},{"name":"set_rule_mode","fixed":{"name":"set_rule_mode","description":"Set enforcement mode (shadow/advisory/enforce) for a specific rule. Requires API key (Pro+).","inputSchema":{"type":"object","required":["rule_id","mode"],"properties":{"mode":{"enum":["shadow","advisory","enforce"],"type":"string","description":"Enforcement mode"},"rule_id":{"type":"string","description":"Rule ID to configure"},"agent_id":{"type":"string","description":"Optional: scope override to a specific agent ID"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"ship_confidence_check","fixed":{"name":"ship_confidence_check","description":"[Planned — not yet implemented on the remote endpoint, returns NOT_IMPLEMENTED] Ship Confidence Gate (Rule 42) dual-tier authorization is not yet built in this backend.","inputSchema":{"type":"object","required":["artifact_id"],"properties":{"label":{"type":"string","description":"Human-readable label of the publish action (optional)"},"artifact_id":{"type":"string","description":"The artifact being shipped (e.g. '@sunaiva/gate@1.1.0')"},"command_preview":{"type":"string","description":"First 300 chars of the command that triggered the check (optional)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":170,"tokensAfter":170},{"name":"update_custom_rule","fixed":{"name":"update_custom_rule","description":"Update an existing custom rule. Requires API key (Pro+).","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Rule ID to update"},"name":{"type":"string"},"tier":{"type":"string"},"severity":{"enum":["block","warn"],"type":"string"},"description":{"type":"string"},"detection_pattern":{"type":"string","description":"There is no 'pattern' field — 'detection_pattern' is the only field name the evaluator reads; the backend explicitly rejects 'pattern'."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":153,"tokensAfter":153},{"name":"update_rules","fixed":{"name":"update_rules","description":"[Planned — not yet implemented on the remote endpoint, returns NOT_IMPLEMENTED] Enable/disable is not backed by any route in this API; use set_rule_mode (shadow/advisory/enforce) instead, or the local `npx @sunaiva/gate` package.","inputSchema":{"type":"object","properties":{"enable":{"type":"array","items":{"type":"string"},"description":"Rule IDs to enable"},"disable":{"type":"array","items":{"type":"string"},"description":"Rule IDs to disable"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":137,"tokensAfter":137},{"name":"validate_action","fixed":{"name":"validate_action","description":"Check if a proposed action passes all active validation rules. Returns allowed/blocked with rule violations.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"The action to validate"},"context":{"type":"string","description":"Optional additional context, appended to `action` before rule matching — it can change which rules match and therefore the verdict."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129}],"toolsChanged":13,"tokensSaved":0,"todo":[{"tool":"update_custom_rule","params":["name","tier","severity","description"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}