Use-case recipes
DPA-safe ticket analysis
Summarize support ticket trends without sending customer names, emails, phone numbers, or Swedish identifiers to the model.
input → mcp_input → redact_text → model → output
{
"mcp_input": {
"server_url": "https://tickets.internal/mcp/sse",
"transport": "sse",
"tool_name": "search_tickets",
"result_field": "raw_tickets",
"tool_arguments": { "query": "{question}", "limit": 20 }
},
"redact_text": {
"fields": ["raw_tickets.text"],
"patterns": ["email", "phone_se", "personnummer_se", "orgnumber_se"],
"extra_patterns": ["\\+\\d{1,3}[\\s-]?\\d(?:[\\d\\s()-]{6,}\\d)"],
"replacement": "[REDACTED]"
},
"model": {
"deployment_id": "dep_claude_support",
"prompt_field": "raw_tickets.text"
}
}Inspect the run trace for MCP output, redaction_summary, provider/model metadata, and model_request.messages.
CRM account briefing
Look up account context from an MCP server, redact contact data, and generate a short account summary.
input → mcp_input → redact_text → model → output
{
"mcp_input": {
"server_url": "https://crm.internal/mcp",
"transport": "http",
"tool_name": "lookup_accounts",
"result_field": "crm_context",
"tool_arguments": {
"query": "{question}",
"include_contacts": false,
"limit": 10
}
},
"redact_text": {
"fields": ["crm_context.text"],
"patterns": ["email", "phone_se"],
"extra_patterns": ["\\+\\d{1,3}[\\s-]?\\d(?:[\\d\\s()-]{6,}\\d)"]
},
"model": {
"deployment_id": "dep_account_summary",
"prompt_field": "crm_context.text"
}
}Use a stable result_field so the redaction and model nodes always read the same normalized MCP text.
Knowledge lookup with citations
Search an uploaded knowledge base and return cited evidence for a customer or internal answer flow.
input → retrieval → rerank → answer_with_citations → output
{
"retrieval": {
"knowledge_base_id": "kb_product_docs",
"query_template": "{question}",
"top_k": 8,
"min_score": 0.2
},
"rerank": {
"top_n": 5,
"threshold": 0.2
},
"answer_with_citations": {
"question_field": "question",
"strict_mode": true
}
}This workflow returns grounded citation objects from retrieved chunks. For full generated RAG answers, use the RAG API or add a supported prompt-building step before a model node.
Human approval before an external action
Pause high-risk actions for manual review before calling a webhook or internal HTTP tool.
input → condition → approval → tool_call → output
{
"condition": {
"field": "risk_level",
"operator": "in",
"value": ["high", "critical"]
},
"approval": {
"payload": {
"reason": "High-risk workflow action requires review"
}
},
"tool_call": {
"execution_type": "http",
"method": "POST",
"endpoint": "https://ops.internal/actions",
"body_field": "tool_input",
"timeout_ms": 10000
}
}The approval node creates a waiting_approval run state. The HTTP tool only runs after the workflow resumes.
Policy gate before model inference
Block a workflow when the incoming payload has already been classified as high risk.
input → policy_check → model → output
{
"policy_check": {
"risk_field": "high_risk",
"block_on_high_risk": true
},
"model": {
"deployment_id": "dep_safe_chat",
"prompt_field": "question"
}
}The policy_check node enforces a simple boolean gate. Deployment-level policies still run again inside the model node before provider inference.
Provider fallback branch
Try one provider-backed model first and fall back to another node if the first node fails.
input → model_primary → output, with fallback_node_id: model_backup
{
"model_primary": {
"deployment_id": "dep_primary_model",
"prompt_field": "question"
},
"model_backup": {
"deployment_id": "dep_backup_model",
"prompt_field": "question"
},
"node_options": {
"fallback_node_id": "model_backup",
"retry_policy": {
"max_attempts": 2,
"backoff_type": "exponential",
"backoff_ms": 250
}
}
}fallback_node_id and retry_policy are supported workflow node properties. Use a provider-backed deployment for each model node.
Native tool-calling account agent
Let a provider-backed model decide when to call an approved account lookup function, then produce a final answer.
input → agent → output
{
"agent": {
"deployment_id": "dep_reasoning_model",
"prompt_field": "question",
"max_iterations": 4,
"tools": [
{
"name": "lookup_account",
"description": "Fetch account context by account ID",
"input_schema": {
"type": "object",
"properties": { "account_id": { "type": "string" } },
"required": ["account_id"]
},
"function": {
"execution_type": "http",
"method": "POST",
"endpoint": "https://crm.internal/account",
"body_template": { "account_id": "{account_id}" }
}
}
]
}
}The run trace records agent_steps, native tool calls, function requests/responses, token usage, and the final agent_output.