Skip to main content
Use @client_tool when the connected client—not the agent server—owns execution.
Harnest never executes the declaration body. It suspends the invocation and asks the client to run the tool.

Client-tool properties

Transport flow

The submitted result is identity-bound, one-time, and validated against the declared return type.

Combine with approval

@client_tool and @require_human_approval can appear in either decorator order. Approval runs first. After approval, the host receives the client-tool request.

Human approvals

Bind approval to the exact user, session, invocation, action, and arguments.

Serving agents

Implement approval and client-tool responses over each transport.