Skip to content

Approval workflow

When approval_required=True, each tool call on the tool server requires approval via WebSocket before execution.

from mcpygen import ApprovalClient, ApprovalRequest, ToolServer

async def on_approval(request: ApprovalRequest):
    print(f"Tool call: {request}")
    await request.accept()  # or request.reject()

async with ToolServer(approval_required=True) as server:
    async with ApprovalClient(callback=on_approval):
        # Tool calls now require approval
        ...

Typed approval errors

Generated tool APIs raise specific error types for approval failures:

Both inherit from ToolRunnerError.