{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "category": "",
    "endpoint": "https://mcp.sunaivacore.io",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/sunaivacore-gate.json",
    "kind": "mcp",
    "listed": "indexed",
    "liveUrl": "https://www.anchorterminal.com/api/v1/live/sunaivacore-gate.json",
    "markdownUrl": "https://www.anchorterminal.com/tools/sunaivacore-gate.md",
    "mcpTools": {
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 2374,
        "counts": {
          "error": 0,
          "note": 1,
          "warn": 17
        },
        "findings": [
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "update_custom_rule",
            "message": "4 parameters without a description: description, name, severity, tier",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "add_custom_rule",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "apply_preset",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "audit_verify",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "delete_custom_rule",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_audit_log",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_rule_modes",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_rules",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "list_custom_rules",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "list_presets",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "log_bypass",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "reset_rule_mode",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "set_rule_mode",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "ship_confidence_check",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"check\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "update_custom_rule",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "update_rules",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "validate_action",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"validate\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC24",
            "severity": "note",
            "message": "16 of 16 tools have no outputSchema",
            "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
          }
        ]
      },
      "checkedAt": "2026-10-04T22:25:28Z",
      "count": 16,
      "note": "answered without the initialize handshake",
      "schemaTokens": 2374,
      "status": "ok",
      "tools": [
        {
          "name": "validate_action",
          "description": "Check if a proposed action passes all active validation rules. Returns allowed/blocked with rule violations.",
          "inputSchema": {
            "properties": {
              "action": {
                "description": "The action to validate",
                "type": "string"
              },
              "context": {
                "description": "Optional additional context, appended to `action` before rule matching — it can change which rules match and therefore the verdict.",
                "type": "string"
              }
            },
            "required": [
              "action"
            ],
            "type": "object"
          }
        },
        {
          "name": "log_bypass",
          "description": "Record an intentional rule bypass with justification. Cannot bypass constitutional rules.",
          "inputSchema": {
            "properties": {
              "reason": {
                "description": "Justification for the bypass",
                "type": "string"
              },
              "rule_id": {
                "description": "ID of the rule to bypass",
                "type": "string"
              }
            },
            "required": [
              "rule_id",
              "reason"
            ],
            "type": "object"
          }
        },
        {
          "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": {
            "properties": {
              "category": {
                "description": "Filter by category",
                "type": "string"
              },
              "preset": {
                "description": "Filter by preset name",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "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": {
            "properties": {
              "disable": {
                "description": "Rule IDs to disable",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "enable": {
                "description": "Rule IDs to enable",
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "get_audit_log",
          "description": "View recent gate decisions — blocks, warnings, passes, and bypasses.",
          "inputSchema": {
            "properties": {
              "limit": {
                "description": "Max entries to return (default 50)",
                "type": "number"
              },
              "rule_id": {
                "description": "Accepted for forward-compatibility but NOT applied server-side — the backend only honors limit/cursor. Filter the returned entries client-side.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "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": {
            "properties": {
              "artifact_id": {
                "description": "The artifact being shipped (e.g. '@sunaiva/gate@1.1.0')",
                "type": "string"
              },
              "command_preview": {
                "description": "First 300 chars of the command that triggered the check (optional)",
                "type": "string"
              },
              "label": {
                "description": "Human-readable label of the publish action (optional)",
                "type": "string"
              }
            },
            "required": [
              "artifact_id"
            ],
            "type": "object"
          }
        },
        {
          "name": "audit_verify",
          "description": "[Planned — not yet implemented on the remote endpoint, returns NOT_IMPLEMENTED] Forward-linked hash-chain / ed25519 audit-log verification is not yet built in this backend.",
          "inputSchema": {
            "properties": {},
            "type": "object"
          }
        },
        {
          "name": "set_rule_mode",
          "description": "Set enforcement mode (shadow/advisory/enforce) for a specific rule. Requires API key (Pro+).",
          "inputSchema": {
            "properties": {
              "agent_id": {
                "description": "Optional: scope override to a specific agent ID",
                "type": "string"
              },
              "mode": {
                "description": "Enforcement mode",
                "enum": [
                  "shadow",
                  "advisory",
                  "enforce"
                ],
                "type": "string"
              },
              "rule_id": {
                "description": "Rule ID to configure",
                "type": "string"
              }
            },
            "required": [
              "rule_id",
              "mode"
            ],
            "type": "object"
          }
        },
        {
          "name": "get_rule_modes",
          "description": "List all enforcement-mode overrides configured for the authenticated customer. Requires an account (Dev+).",
          "inputSchema": {
            "properties": {},
            "type": "object"
          }
        },
        {
          "name": "reset_rule_mode",
          "description": "Remove a mode override for a rule, reverting it to its default enforcement mode. Requires API key (Pro+).",
          "inputSchema": {
            "properties": {
              "rule_id": {
                "description": "Rule ID whose override to remove",
                "type": "string"
              }
            },
            "required": [
              "rule_id"
            ],
            "type": "object"
          }
        },
        {
          "name": "add_custom_rule",
          "description": "Create a custom detection rule in the backend. Requires API key (Pro+).",
          "inputSchema": {
            "properties": {
              "description": {
                "description": "Rule description (required — the backend 400s on a missing/empty description)",
                "type": "string"
              },
              "detection_pattern": {
                "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'.",
                "type": "string"
              },
              "name": {
                "description": "Rule name",
                "type": "string"
              },
              "severity": {
                "description": "Severity on match",
                "enum": [
                  "block",
                  "warn"
                ],
                "type": "string"
              },
              "tier": {
                "description": "Optional tier restriction",
                "type": "string"
              }
            },
            "required": [
              "name",
              "description",
              "detection_pattern",
              "severity"
            ],
            "type": "object"
          }
        },
        {
          "name": "update_custom_rule",
          "description": "Update an existing custom rule. Requires API key (Pro+).",
          "inputSchema": {
            "properties": {
              "description": {
                "type": "string"
              },
              "detection_pattern": {
                "description": "There is no 'pattern' field — 'detection_pattern' is the only field name the evaluator reads; the backend explicitly rejects 'pattern'.",
                "type": "string"
              },
              "id": {
                "description": "Rule ID to update",
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "severity": {
                "enum": [
                  "block",
                  "warn"
                ],
                "type": "string"
              },
              "tier": {
                "type": "string"
              }
            },
            "required": [
              "id"
            ],
            "type": "object"
          }
        },
        {
          "name": "delete_custom_rule",
          "description": "Delete a custom rule. Requires API key (Pro+).",
          "inputSchema": {
            "properties": {
              "id": {
                "description": "Rule ID to delete",
                "type": "string"
              }
            },
            "required": [
              "id"
            ],
            "type": "object"
          }
        },
        {
          "name": "list_custom_rules",
          "description": "List all custom rules for the authenticated customer. Requires API key (Pro+).",
          "inputSchema": {
            "properties": {},
            "type": "object"
          }
        },
        {
          "name": "list_presets",
          "description": "List available rule preset bundles. Requires API key (Dev+).",
          "inputSchema": {
            "properties": {},
            "type": "object"
          }
        },
        {
          "name": "apply_preset",
          "description": "Apply a preset bundle, activating all its included rules. Requires API key (Pro+).",
          "inputSchema": {
            "properties": {
              "preset_id": {
                "description": "ID of the preset to apply",
                "type": "string"
              }
            },
            "required": [
              "preset_id"
            ],
            "type": "object"
          }
        }
      ]
    },
    "name": "Sunaiva Gate — Agent Rule Enforcement",
    "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
    "packages": [
      {
        "registryType": "npm",
        "identifier": "@sunaiva/gate",
        "version": "2.0.4",
        "transport": "stdio"
      }
    ],
    "pageJsonUrl": "https://www.anchorterminal.com/tools/sunaivacore-gate.json",
    "popularity": {
      "npmWeekly": 35
    },
    "registryName": "io.sunaivacore/gate",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://mcp.sunaivacore.io"
      }
    ],
    "repository": "",
    "reviewed": false,
    "slug": "sunaivacore-gate",
    "source": "the official MCP registry",
    "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.sunaivacore/gate",
    "summary": "MCP enforcement layer that intercepts AI agent actions and blocks rule violations before execution.",
    "updatedAt": "2026-07-19T02:17:41Z",
    "url": "https://www.anchorterminal.com/tools/sunaivacore-gate",
    "vendor": "sunaivacore.io",
    "vendorUrl": "https://sunaivacore.io/products/gate",
    "version": "2.0.4",
    "websiteUrl": "https://sunaivacore.io/products/gate",
    "where": "both",
    "why": [
      "vendor"
    ]
  }
}
