Private Beta — Contact us to get set up.
Provider options
- LangGuard for a ready-to-use external policy platform.
- BYO interceptor service for internal or vendor governance engines.
What is authoritative
- Identity and role claims come from your IdP.
- Policy decisions come from your configured interceptor provider.
- UI-level warnings are not authoritative enforcement.
When to use a PDP interceptor
- Enforce enterprise policy beyond guardrails (e.g., geographic restrictions, tool allowlists).
- Route sensitive requests to humans for approval.
- Centralize policy decisions across multiple MCP servers.
Configuration
Configure the PDP provider per organization in SaaS UI:- Open
/beta/governance/integrations. - Choose
LangGuardorBring Your Own. - Set
Interceptor URL,Interceptor Name, and optionalAPI Key. - Test the connection and save.
- Enable the provider for active enforcement.
GET /governance/providers/configPATCH /governance/providers/configPOST /governance/providers/testDELETE /governance/providers/config
Decision point request
The callee sends a JSON-RPC request to the configured interceptor service URL. HTTP- Method:
POST - Content-Type:
application/json - Authorization:
Bearer <token>
Request fields
| Field | Type | Description |
|---|---|---|
jsonrpc | string | Always "2.0". |
id | string | Request identifier for correlation (same as mcp_call_id). |
method | string | Always "interceptor/validate". |
params.interceptor_name | string | The configured interceptor name. |
params.event | string | The MCP event being intercepted (e.g., "tools/call"). |
params.phase | string | "request" or "response" depending on lifecycle. |
params.context | object | Original MCP call details used for policy evaluation. |
params.context.mcp_call_id | string | Unique identifier for the MCP call. |
params.context.caller_identity | string | Opaque user identifier (internal user ID). |
params.context.source | object | Browser context: tabId, origin, url, title. |
params.context.mcp_call | object | The original MCP method and parameters. |
Decision point response
The interceptor responds with a JSON-RPCresult that contains a validation outcome.
HTTP Status Code: 200 OK (for a valid JSON-RPC response)
Response fields
| Field | Type | Description |
|---|---|---|
result.status | string | "success", "notify", or "failure". |
result.message | string | High-level description of the outcome. |
result.violations | array | List of policy violations (empty for success). |
Violation object
| Field | Type | Description |
|---|---|---|
policy_id | string | Identifier of the violated policy. |
status | string | "notify" for escalation or "block" for denial. |
details | string | Optional human-readable message. |
Decision flow
Error handling
- Non-200 HTTP responses: treat as a policy failure and block the request.
- Timeouts: default to block and log for follow-up.
- Malformed JSON-RPC: treat as failure and return an internal error to the caller.
Security considerations
- Authenticate the interceptor endpoint with a bearer token.
- Data exposure: Tool call arguments are forwarded to the interceptor service for policy evaluation. Review your interceptor provider’s data handling policies to ensure compliance with your organization’s privacy requirements.
- Log all validation outcomes to your audit system.
- Keep a deny-by-default stance for transport or parsing errors.
Need help wiring this into your MCP server? Reach out at [email protected].

