MCP enforcement layer that intercepts AI agent actions and blocks rule violations before execution.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a custom detection rule in the backend. Requires API key (Pro+).
Rule name
Severity on match
Rule description (required — the backend 400s on a missing/empty 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'.
Optional tier restriction
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Create a custom detection rule in the backend. Requires API key (Pro+).
| Argument | Type | Description |
|---|---|---|
| name* | string | Rule name |
| tier | string | Optional tier restriction |
| severity* | string | Severity on match |
| description* | string | Rule description (required — the backend 400s on a missing/empty description) |
| detection_pattern* | string | 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": "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'."
}
}
}Apply a preset bundle, activating all its included rules. Requires API key (Pro+).
| Argument | Type | Description |
|---|---|---|
| preset_id* | string | ID of the preset to apply |
{
"type": "object",
"required": [
"preset_id"
],
"properties": {
"preset_id": {
"type": "string",
"description": "ID of the preset to apply"
}
}
}[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.
No arguments.
{
"type": "object",
"properties": {}
}Delete a custom rule. Requires API key (Pro+).
| Argument | Type | Description |
|---|---|---|
| id* | string | Rule ID to delete |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Rule ID to delete"
}
}
}View recent gate decisions — blocks, warnings, passes, and bypasses.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max entries to return (default 50) |
| rule_id | string | Accepted for forward-compatibility but NOT applied server-side — the backend only honors limit/cursor. Filter the returned entries client-side. |
{
"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."
}
}
}List all enforcement-mode overrides configured for the authenticated customer. Requires an account (Dev+).
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| preset | string | Filter by preset name |
| category | string | Filter by category |
{
"type": "object",
"properties": {
"preset": {
"type": "string",
"description": "Filter by preset name"
},
"category": {
"type": "string",
"description": "Filter by category"
}
}
}List all custom rules for the authenticated customer. Requires API key (Pro+).
No arguments.
{
"type": "object",
"properties": {}
}List available rule preset bundles. Requires API key (Dev+).
No arguments.
{
"type": "object",
"properties": {}
}Record an intentional rule bypass with justification. Cannot bypass constitutional rules.
| Argument | Type | Description |
|---|---|---|
| reason* | string | Justification for the bypass |
| rule_id* | string | ID of the rule to bypass |
{
"type": "object",
"required": [
"rule_id",
"reason"
],
"properties": {
"reason": {
"type": "string",
"description": "Justification for the bypass"
},
"rule_id": {
"type": "string",
"description": "ID of the rule to bypass"
}
}
}Remove a mode override for a rule, reverting it to its default enforcement mode. Requires API key (Pro+).
| Argument | Type | Description |
|---|---|---|
| rule_id* | string | Rule ID whose override to remove |
{
"type": "object",
"required": [
"rule_id"
],
"properties": {
"rule_id": {
"type": "string",
"description": "Rule ID whose override to remove"
}
}
}Set enforcement mode (shadow/advisory/enforce) for a specific rule. Requires API key (Pro+).
| Argument | Type | Description |
|---|---|---|
| mode* | string | Enforcement mode |
| rule_id* | string | Rule ID to configure |
| agent_id | string | Optional: scope override to a specific agent ID |
{
"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"
}
}
}[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.
| Argument | Type | Description |
|---|---|---|
| label | string | Human-readable label of the publish action (optional) |
| artifact_id* | string | The artifact being shipped (e.g. '@sunaiva/[email protected]') |
| command_preview | string | First 300 chars of the command that triggered the check (optional) |
{
"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/[email protected]')"
},
"command_preview": {
"type": "string",
"description": "First 300 chars of the command that triggered the check (optional)"
}
}
}Update an existing custom rule. Requires API key (Pro+).
| Argument | Type | Description |
|---|---|---|
| id* | string | Rule ID to update |
| name | string | |
| tier | string | |
| severity | string | |
| description | string | |
| detection_pattern | string | There is no 'pattern' field — 'detection_pattern' is the only field name the evaluator reads; the backend explicitly rejects 'pattern'. |
{
"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'."
}
}
}[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.
| Argument | Type | Description |
|---|---|---|
| enable | array | Rule IDs to enable |
| disable | array | Rule IDs to disable |
{
"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"
}
}
}Check if a proposed action passes all active validation rules. Returns allowed/blocked with rule violations.
| Argument | Type | Description |
|---|---|---|
| action* | string | The action to validate |
| context | string | Optional additional context, appended to `action` before rule matching — it can change which rules match and therefore the verdict. |
{
"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."
}
}
}