Guard Providers
Beyond the built-in guards, Willow can route runtime content through external providers for content safety and custom validation. The Connect Providers cards sit below the runtime guard list on the Security > Guards page. Each card has an Enable button that opens a configuration modal.
| Provider | What it does | Credentials |
|---|---|---|
| Alice | Content safety validation for prompts and responses | API key |
| Prompt Security | Content protection for prompts and responses | Base URL and API key |
| Custom Webhook | Sends tool inputs and outputs to your own endpoint for validation | Webhook URL |
Providers run in addition to any enabled guards. When more than one is active, all are evaluated in sequence, and the first block stops the call.
Alice
Alice provides real-time content safety validation for prompts and responses. When enabled, tool input parameters and tool responses are validated through Alice's content moderation API before they are processed or returned. If content violates a configured policy, the call is blocked and the user receives a guardrails message. Content policies themselves are configured in your Alice dashboard, not in Willow.
This provider was previously documented as Active Fence. It now appears in Willow as Alice.
Prerequisites
- An Alice account with API access
- An Alice API key
- Admin access to your Willow dashboard
Connect Alice
- In your Alice dashboard, generate or copy your API key and keep it secure.
- In Willow, select Security > Guards.
- Scroll to the Connect Providers section at the bottom of the guards list.
- On the Alice card, select Enable.
- Enter your Alice API key. The key field has a show/hide toggle.
- Select Save before leaving the page.


Once connected, Alice validates every input parameter passed to your MCP tools and every response they return against its content-safety policies. To confirm it is working, check your Alice dashboard for incoming API requests and look for guard validation events in Monitor > Logs. You can disable Alice at any time from Security > Guards; changes take effect immediately.
If Alice's API is unavailable, your Willow gateway keeps functioning as normal, but without Alice validation.
Troubleshooting
- Integration not working: verify the API key is correct and has the right permissions, confirm your Willow gateway can reach Alice's API endpoints, and review Monitor > Logs for guard-related errors.
- Legitimate content is being blocked: content policies are configured in your Alice dashboard, not in Willow. Review your Alice content policies, tune sensitivity with Alice support, or configure exceptions for known-safe content.
Prompt Security
Prompt Security analyzes prompts and responses for risks such as prompt injection, data leakage, and unsafe content, and can block or transform text before it is processed or returned.
Select Enable on the Prompt Security card to open Prompt Security Configuration, then provide:
| Field | Description |
|---|---|
| Base URL | The regional endpoint for your Prompt Security deployment |
| API Key | Your Prompt Security application ID (used as the API key) |

Use the base URL that matches your region:
| Region | Base URL |
|---|---|
| EU | https://eu.prompt.security |
| US East | https://useast.prompt.security |
| APAC | https://apac.prompt.security |
Willow calls the Protect endpoint at https://[REGION].prompt.security/api/protect. Based on the response, Willow enforces:
- If the result is blocked, the operation is blocked and the user sees a guardrails message.
- Otherwise, if the result is modified, Willow uses the returned modified text in place of the original.
- Otherwise, the original text proceeds unchanged.
Custom Webhook
The Custom Webhook provider sends tool inputs and outputs to an endpoint you control, letting you implement any validation logic: policy checks, PII masking, rate limiting, business-hours rules, or anything else. Willow calls your webhook at two stages, before tool execution (input) and after (output).
Select Enable on the Custom Webhook card to open Custom Webhook Configuration:

| Field | Description |
|---|---|
| Webhook URL | Your HTTPS endpoint, for example https://your-webhook-endpoint.com/validate |
| Timeout (milliseconds) | Maximum time to wait for a response (default 2500) |
| Fail Open (recommended) | When checked, calls are allowed if the webhook times out or errors. Uncheck to fail closed and block on failure. |
| Observe Only Mode | When checked, requests are sent but responses are not enforced, so no call is ever blocked. Use it to test your endpoint. |
Request format
Willow sends a POST request with the tool context and payload. The stage field is "input" before execution and "output" after:
{
"action": "tool_call",
"stage": "input",
"user": { "email": "user@example.com" },
"mcpClient": "claude-desktop",
"toolkit": "mcp-toolkit",
"transport": "http",
"integration": {
"slug": "slack-integration",
"name": "Slack",
"connectorId": "slack",
"authType": "oauth2"
},
"tool": {
"name": "send_message",
"arguments": { "channel": "#general", "text": "Hello team!" }
},
"payload": { "channel": "#general", "text": "Hello team!" }
}
Key fields: stage (input or output), user.email, mcpClient, transport, integration, tool.name, tool.arguments, and payload (the data sent to, or received from, the tool).
Response format
Your webhook must respond with an action:
{
"action": "allow",
"logData": { "code": "validation_passed", "details": {} }
}
| Field | Description |
|---|---|
action | One of allow, block, transform, or warn |
payload | Required when action is transform: the data to use in place of the original |
logData.code | Optional classification code stored in audit logs (for example, pii_masked) |
logData.details | Optional additional context to log |
Action types:
allowproceeds with the original payload.blockstops the call and returns an error to the user.transformreplaces the payload with the value you return.warnallows the call but logs a warning for review.
Failure behavior
If your webhook is unreachable, times out, or returns an invalid response, Willow applies your Fail Open setting: fail open allows the call, fail closed blocks it. In Observe Only Mode, calls are always allowed and responses are not awaited, which makes it the safe way to test a new endpoint before enforcing it.