# business_pod_validate

ADR-164 Phase 2 — Validate a business-pod template JSON against the schema in ADR-164 §3.3 (name, agents[], allowedMcpTools, bench, piiPolicy, budgets, cronSchedule, auditReadView, reservationExpiryMs bounded by ADR-164.1 §3.2). Use when a /loop driver or CI workflow needs to pre-flight a pod template before pod-tick.mjs reaches it — surfacing validation as JSON keeps the optional-dep degraded path clean. Hand-parsing the JSON in the caller is wrong because it skips the JSON-pointer error path and the reservationExpiryMs [5000, 300000] ms bound check that ADR-164.1 mandates. Pair with business_pod_validate -> pod-tick.mjs in the sales-pod smoke contract.

Agent View of the PolicyLayer registry record for `business_pod_validate`. HTML page: https://policylayer.com/tools/ruflo/business-pod-validate

## Facts

- Tool: `business_pod_validate`
- Server: Ruflo (`ruvnet/ruflo`) — https://policylayer.com/tools/ruflo.md
- Homepage: https://github.com/ruvnet/ruflo
- Risk category: Read (Low risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Allowed

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "business_pod_validate",
    "arguments": {}
  }
}
```

## Why business_pod_validate is rated Low

This is a validation/query tool that reads and validates a template structure without side effects. It checks conformance to a schema and returns validation results. This is a read operation with no modifications to state, no execution of arbitrary code, and no destructive capabilities. Severity is low because misuse would only result in incorrect validation feedback, not system harm.

From the tool's own definition: "Tool validates a business-pod template JSON against a schema (ADR-164 §3.3) and surfaces validation results."

## Use case

AI agents call business_pod_validate to retrieve information from Ruflo without modifying anything. It is typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.

## Recommended policy (PolicyLayer)

Verdict: **Allowed**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Ruflo:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "business_pod_validate": {}
  }
}
```

## Other tools on Ruflo (495)

- `agent_terminate` — Destructive — https://policylayer.com/tools/ruflo/agent-terminate.md
- `agentdb_batch` — Destructive — https://policylayer.com/tools/ruflo/agentdb-batch.md
- `agentdb_causal-edge-delete` — Destructive — https://policylayer.com/tools/ruflo/agentdb-causal-edge-delete.md
- `agentdb_causal-node-delete` — Destructive — https://policylayer.com/tools/ruflo/agentdb-causal-node-delete.md
- `agentdb_hierarchical-delete` — Destructive — https://policylayer.com/tools/ruflo/agentdb-hierarchical-delete.md
- `autopilot_reset` — Destructive — https://policylayer.com/tools/ruflo/autopilot-reset.md
- `config_reset` — Destructive — https://policylayer.com/tools/ruflo/config-reset.md
- `federation_wg_keyrotate` — Destructive — https://policylayer.com/tools/ruflo/federation-wg-keyrotate.md
- `hooks_intelligence-reset` — Destructive — https://policylayer.com/tools/ruflo/hooks-intelligence-reset.md
- `hooks_worker-cancel` — Destructive — https://policylayer.com/tools/ruflo/hooks-worker-cancel.md
- `iot_device_remove` — Destructive — https://policylayer.com/tools/ruflo/iot-device-remove.md
- `iot_device_unpair` — Destructive — https://policylayer.com/tools/ruflo/iot-device-unpair.md
- `iot_firmware_rollout_rollback` — Destructive — https://policylayer.com/tools/ruflo/iot-firmware-rollout-rollback.md
- `iot_fleet_delete` — Destructive — https://policylayer.com/tools/ruflo/iot-fleet-delete.md
- `iot_fleet_remove_device` — Destructive — https://policylayer.com/tools/ruflo/iot-fleet-remove-device.md
- `managed_agent_terminate` — Destructive — https://policylayer.com/tools/ruflo/managed-agent-terminate.md
- `memory_delete` — Destructive — https://policylayer.com/tools/ruflo/memory-delete.md
- `policy_revoke` — Destructive — https://policylayer.com/tools/ruflo/policy-revoke.md
- `ruvector_delete` — Destructive — https://policylayer.com/tools/ruflo/ruvector-delete.md
- `session_delete` — Destructive — https://policylayer.com/tools/ruflo/session-delete.md
- `system_reset` — Destructive — https://policylayer.com/tools/ruflo/system-reset.md
- `task_cancel` — Destructive — https://policylayer.com/tools/ruflo/task-cancel.md
- `wasm_agent_reset` — Destructive — https://policylayer.com/tools/ruflo/wasm-agent-reset.md
- `wasm_gallery_remove_custom` — Destructive — https://policylayer.com/tools/ruflo/wasm-gallery-remove-custom.md
- `workflow_cancel` — Destructive — https://policylayer.com/tools/ruflo/workflow-cancel.md
- `workflow_delete` — Destructive — https://policylayer.com/tools/ruflo/workflow-delete.md
- `agent_pool` — Execute — https://policylayer.com/tools/ruflo/agent-pool.md
- `agent_spawn` — Execute — https://policylayer.com/tools/ruflo/agent-spawn.md
- `agentdb_consolidate` — Execute — https://policylayer.com/tools/ruflo/agentdb-consolidate.md
- `agentdb_route` — Execute — https://policylayer.com/tools/ruflo/agentdb-route.md
- …and 465 more: https://policylayer.com/tools/ruflo.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=ruflo · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/ruflo
