# yaver_ask_user

Ask the human running this Yaver task a single structured question (Claude-Code-style: short 'header' chip + 2-4 'choices', optional multi-select, free-text 'Other' is always offered by the surface). The question is delivered to whichever Yaver surface the user is on (mobile app, web dashboard, CLI); the answer string is returned as the tool result. Blocks until answered or until the timeout (default 5 min, max 30). DEFAULT TO NOT CALLING THIS. Asking is the slow path — the user is on a phone and may have walked away, so an unanswered question stalls the whole run until it times out. Before calling, you must have already: (1) checked the project files / git log / vault for the answer, and (2) confirmed no sensible default exists. Only ask for genuinely irreversible actions, value judgements, or production / billing / customer-visible state. For everything else pick the most reasonable default, state the assumption in one line, and proceed — a reversible wrong guess is cheaper than a stalled run. Result on timeout / cancel: {cancelled:true} — handle it by taking the safest default and continuing, never by re-asking. Requires the agent to be running inside a Yaver task (YAVER_TASK_ID env var must be set by the spawning daemon).

Agent View of the PolicyLayer registry record for `yaver_ask_user`. HTML page: https://policylayer.com/tools/io-github-kivanccakmak-yaver/yaver-ask-user

## Facts

- Tool: `yaver_ask_user`
- Server: Yaver (`yaver-cli`) — https://policylayer.com/tools/io-github-kivanccakmak-yaver.md
- Install: `npx -y yaver-cli`
- Homepage: https://github.com/kivanccakmak/yaver.io
- Risk category: Destructive (Critical risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 9 (1 required)
- Recommended policy verdict: Hidden

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `kind` | string | no | How to render the input on the user's surface. 'text' = free-form text input (default). 'choice' = pick from the choices array (the surface ALWAYS also offers a |
| `step` | string | no | F3 handoff step type — drives how the surface renders the card (e.g. two_factor => OTP keypad, payment_confirm => approve/deny, captcha => tap-on-image). Omit f |
| `multi` | boolean | no | kind=choice only. true = the user may select multiple options; the answer comes back as the picked labels joined by '; '. Default false (single pick). |
| `header` | string | no | Optional short tag (≤12 chars, e.g. 'Auth method', 'DB', 'Deploy target') rendered as a chip above the prompt — the Claude-Code AskUserQuestion style. Omit for |
| `prompt` | string | yes | The question to show the user. Be specific and brief — the user is on a phone or laptop and may have walked away. Include the consequence of each option if aski |
| `choices` | array | no | Required when kind=choice. Each entry is one option label. Keep to 2-4 short, mutually-exclusive options (a free-text 'Other…' is appended automatically). Put y |
| `screenshot` | string | no | F3 handoff: base64 PNG of the relevant page region (e.g. from browser_screenshot) to show ABOVE the prompt so the human sees exactly what they're acting on — th |
| `vault_hint` | string | no | When asking for a credential, set to the vault entry name you'd ideally read instead. The mobile/web sheet renders a 'Use stored value' shortcut so the user doe |
| `timeout_sec` | integer | no | Seconds to wait for an answer before the tool returns {cancelled:true}. Default 300, max 1800. |

Parameters from the server's own tool schema.

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

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yaver_ask_user",
    "arguments": {
      "prompt": "<prompt>"
    }
  }
}
```

## Why yaver_ask_user is rated Critical

An AI agent that decides to call yaver_ask_user doesn't hesitate, doesn't double-check, and doesn't stop at one. Whatever it removes from Yaver is gone. There is no undo for destructive operations.

## Use case

AI agents call yaver_ask_user to permanently remove resources in Yaver, typically in cleanup and lifecycle workflows. It does its job in a single call, and there is no undo.

## Recommended policy (PolicyLayer)

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

```json
{
  "version": "1",
  "default": "deny",
  "hide": [
    "yaver_ask_user"
  ]
}
```

## Other tools on Yaver (644)

- `acl_remove_peer` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/acl-remove-peer.md
- `cancel_schedule` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/cancel-schedule.md
- `cloud_destroy` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/cloud-destroy.md
- `companion_down` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/companion-down.md
- `data_delete` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/data-delete.md
- `db_push` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/db-push.md
- `db_reset` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/db-reset.md
- `db_restore` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/db-restore.md
- `dns_flush` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/dns-flush.md
- `dns_remove` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/dns-remove.md
- `docker_prune` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/docker-prune.md
- `docker_rm` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/docker-rm.md
- `docker_rmi` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/docker-rmi.md
- `feedback_delete` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/feedback-delete.md
- `forgot_password` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/forgot-password.md
- `git_member_remove` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/git-member-remove.md
- `git_stash` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/git-stash.md
- `guest_delete` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/guest-delete.md
- `guest_revoke` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/guest-revoke.md
- `jobs_cancel` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/jobs-cancel.md
- `machine_onboarding_remove` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/machine-onboarding-remove.md
- `machine_remove` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/machine-remove.md
- `migrate_rollback` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/migrate-rollback.md
- `models_remove` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/models-remove.md
- `monitor_remove` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/monitor-remove.md
- `phone_project_delete` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/phone-project-delete.md
- `proxy_remove` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/proxy-remove.md
- `relay_clear_password` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/relay-clear-password.md
- `release_rollback` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/release-rollback.md
- `remote_destroy` — Destructive — https://policylayer.com/tools/io-github-kivanccakmak-yaver/remote-destroy.md
- …and 614 more: https://policylayer.com/tools/io-github-kivanccakmak-yaver.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=io-github-kivanccakmak-yaver · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/io-github-kivanccakmak-yaver
