Documentation / Build
Try governed tool examples
Validate manifests and preview tool calls locally. Dry-runs do not contact the MCP server or change CRM records.
Read with MCP
Download the manifest and request together.
rippflow tools validate mcp.tool.yaml
rippflow tools invoke customer-lookup \
--input mcp.request.json --tool-manifest mcp.tool.yaml --dry-runExpected: a valid manifest and a local dry-run result. No customer lookup is performed.
Require approval for CRM writes
Download the manifest and request together.
rippflow tools validate crm.tool.yaml
rippflow tools invoke crm-update \
--input crm.request.json --tool-manifest crm.tool.yaml --dry-runThe manifest requires approval, crm.customer.write, a budget and an idempotency key. Real calls need an installation and approval bound to the exact input and tool version.
Approval workflow
JSON
{
"name": "approval-crm-update-workflow",
"version": 1,
"controls": {
"policyVersion": 1,
"limits": {
"maxIterations": 4,
"maxToolCalls": 4,
"maxDuration": "30m"
},
"budgets": [
{
"name": "crm-operations",
"resource": "model_cost",
"unit": "usd",
"limit": "1.00",
"enforcement": "hard"
}
]
},
"phases": {
"update-customer-status": {
"type": "mcp_tool",
"order": 1,
"tool": "crm-update",
"toolVersion": "1.0.0",
"serverRef": "internal-crm",
"timeout": "30s",
"controls": {
"budget": "crm-operations"
},
"terminal": true
}
}
}YAML
name: approval-crm-update-workflow
version: 1
controls:
policyVersion: 1
limits:
maxIterations: 4
maxToolCalls: 4
maxDuration: 30m
budgets:
- name: crm-operations
resource: model_cost
unit: usd
limit: "1.00"
enforcement: hard
phases:
update-customer-status:
type: mcp_tool
order: 1
tool: crm-update
toolVersion: 1.0.0
serverRef: internal-crm
timeout: 30s
controls:
budget: crm-operations
terminal: trueVerified sources
Checked 2026-11-05.
- Read-tool contract 04cb082 · main
- Approval-gated CRM contract 04cb082 · main
- CLI validation and dry-run 7f5ea32 · main
