htmman
Human-in-the-loop for AI agents

Your agent stops and asks you.

htmman is the inbox where an agent parks a decision with a person — approve the transfer, judge the photo, make the call — and carries on with what you answer. Your reply is not a yes-or-no gate; it is a value the agent continues from.

Task

Approve a £48,200 supplier payment to Northwind Traders

asked by hermes · approve_payment

State Ready
Priority P1
Risk Irreversible
Agent confidence 0.62

Input

Amount
48,200 GBP
Beneficiary
Northwind Traders Ltd
Memo
Invoice NW-2291, 30-day terms
Evidence
PO-7731 · three-way match passed

Your answer

Approve Edit & approve Reject

Whatever you choose goes back to the agent as the task's output: {"approved": true, "reason_code": "vendor_verified"}

A task as it lands in your worklist: what the agent wants to do, how sure it is, and the answer it is waiting for.

What your agent can hand to you

  • Get permission before doing something consequential

    htm.request_tool_approval

    The agent names the action and its arguments and blocks. You approve, deny with a reason, or approve with corrected arguments — and it proceeds with yours. Mark it irreversible and it always routes to a person.

  • Get an answer it cannot work out alone

    htm.create_task then htm.wait_for_completion

    Opens a task in your queue with whatever context it has, then waits. Whatever you submit comes back to the agent as the task's output, so it can carry on. Good for anything only a person can do — make the call, check the room, read the letter.

  • Have you check something it already drafted

    htm.accept_suggested

    The agent attaches its proposed answer when it creates the task. You accept it as-is, edit it first, or reject it — no retyping what it got right.

  • Tell it why you said no

    htm.reject_with_feedback

    A rejection carries a reason code and an optional correction, so the agent can branch on it instead of retrying the same thing.

  • Have you pick between options

    htm.disambiguate

    The agent supplies the candidates and you choose one; your choice is what it continues with.

  • Show you something to look at

    htm.add_attachment

    Images, PDFs and files attach to the task. Images render on the task page, so "is this the right photo?" is a question you can actually answer.

How it connects

One endpoint, any agent

Agents connect over MCP with a token you issue — Claude Code, Hermes, or anything that speaks streamable HTTP — and their questions land in your queue.

Built for workflows too

REST and JSON for the orchestrator, server-sent events for a live worklist, and signed CloudEvents webhooks when a task changes hands or completes.

A standard lifecycle

Tasks follow WS-HumanTask 1.1 — claim, start, suspend, delegate, complete — so what a task may do next is the OASIS rule, not a surprise.

People, teams, workspaces

Route a task to a person or a whole team, invite colleagues into your workspace, and revoke any one agent's token without touching the rest.