Skip to main content
Glama

Ask the user to step in

writ_browser_ask_user

Request the account owner's help in a live browser session when a CAPTCHA, 2FA prompt, or decision needs a human; they complete the step in Writ and the session resumes.

Instructions

Ask the WRIT USER (the person who owns this Writ account) to step in on an open browser session — complete a security check (CAPTCHA, 'confirm it's you', Arkose/hCaptcha/reCAPTCHA puzzle) in the live browser, supply a one-time 2FA code, or answer a question you cannot decide yourself. Use it when writ_browser_act returns security_check with auto_solved false, when a twofa action fails with twofa_mint_failed or twofa_no_persona (kind='twofa'), or whenever only a human can proceed. A one-time code is NOT a first-resort ask: when twofa answers twofa_method_mismatch or twofa_verify_method, first verify on the page which method it is using and switch it to the persona's (or resend) as the message says; interrupt the user only once that has failed. Never try to click through a CAPTCHA yourself, and never ask for a one-time code through kind='question' or type one into the page: with kind='twofa' the user pastes the code in the Writ app and Writ enters it server-side, so it never reaches you. The session pauses (the user is notified in the app and by email and controls the live page); this call holds up to 60s and returns status 'answered' (with solved / answer, or entered for twofa), 'waiting_for_user' (call again with the same session_id to keep waiting — do not act meanwhile), or 'expired'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNocaptcha: the user completes a check in the live browser. question: the user answers in text. twofa: the user supplies the one-time code the page is asking for; Writ types it server-side and returns `entered`, never the code.
questionNoWhat you need, in one short sentence (required for kind 'question').
session_idYes
wait_secondsNoHold up to this long (1-60, default 60).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with annotations present, the description adds rich behavior the annotations cannot convey: the session pauses, the user is notified in-app and by email and controls the live page, the call holds up to 60s, the three possible statuses (answered / waiting_for_user / expired), and that with kind='twofa' the code is entered server-side and never reaches the agent. This is well beyond the readOnly/idempotent hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, triggers, and prohibitions are front-loaded in the first two sentences, and each subsequent clause carries actionable information. The description is dense and long (roughly a paragraph and a half), which is justified by the branching logic, though it could be trimmed slightly without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the return contract itself (the three statuses and their payloads, including 'entered' for twofa) and the timing/polling behavior. Combined with the error-driven usage triggers, an agent has everything needed to invoke and re-invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, so the schema already documents most parameters (including the kind enum and wait_seconds bounds). The description nonetheless adds real meaning: it warns not to use kind='question' to obtain a one-time code, and explains that kind='twofa' returns 'entered' rather than the code. session_id re-use on 'waiting_for_user' is also clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Ask the WRIT USER ... to step in on an open browser session') and enumerates the concrete cases it covers: CAPTCHA/security check, one-time 2FA code, or an undecidable question. It clearly separates this human-in-the-loop tool from the autonomous siblings (writ_browser_act), so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit triggers are given (writ_browser_act returns security_check with auto_solved false; twofa_mint_failed / twofa_no_persona) plus an explicit when-not: a 2FA code 'is NOT a first-resort ask' until the agent has tried switching/resending the method. Alternatives (verify on the page and switch the twofa method) are named, and the prohibition on clicking CAPTCHAs yourself is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.