CUA MCP Tools

Model Context Protocol tool reference for the Pauhu Computer Use Agent. Playwright-based browser automation for EU procurement and regulatory workflows.

MCP Server Configuration

Add the Pauhu CUA server to your MCP client configuration. The server uses Server-Sent Events (SSE) transport and requires a valid API key.

{
  "mcpServers": {
    "pauhu-cua": {
      "url": "https://staging.pauhu.eu/v1/mcp",
      "transport": "sse",
      "headers": {
        "Authorization": "Bearer pk_your_api_key"
      }
    }
  }
}

Generate an API key at pauhu.ai/keys. All CUA sessions run within an EU-jurisdiction sandboxed browser environment.

cua_click

Click an element on the page. Accepts either a CSS selector, pixel coordinates, or both for precise targeting.

Parameters

cua_click parameters
NameTypeRequiredDescription
session_idstringyesActive CUA session ID
targetstringyesCSS selector or element description
coordinatesobjectno{ "x": number, "y": number } — pixel coordinates
descriptionstringnoHuman-readable description of the action

Example

{
  "name": "cua_click",
  "arguments": {
    "session_id": "cua_abc123",
    "target": "#procurement-type-dropdown",
    "coordinates": { "x": 450, "y": 200 },
    "description": "Open procurement type dropdown"
  }
}

Response

{ "action_id": "act_001", "status": "pending" }

Errors

cua_click error codes
CodeCause
400Missing session_id or target
403Element outside sandbox
404Session not found
408Element not found within timeout

cua_type

Type text into a form field. By default, the field is cleared before typing.

Parameters

cua_type parameters
NameTypeRequiredDescription
session_idstringyesActive CUA session ID
targetstringyesCSS selector or element description
valuestringyesText to type
clear_firstbooleannoClear field before typing (default: true)
descriptionstringnoHuman-readable description

Example

{
  "name": "cua_type",
  "arguments": {
    "session_id": "cua_abc123",
    "target": "input[name='title']",
    "value": "IT Consulting Services — Framework Agreement",
    "description": "Enter contract title"
  }
}

Errors

400 (missing required parameter), 403 (element outside sandbox), 404 (session not found), 408 (element not found within timeout).

cua_scroll

Scroll the page or a specific container element.

Parameters

cua_scroll parameters
NameTypeRequiredDescription
session_idstringyesActive CUA session ID
directionstringyes"up", "down", "left", "right"
amountnumbernoPixels to scroll (default: 300)
targetstringnoCSS selector of scrollable container (default: window)

Errors

400 (invalid parameters), 404 (session not found).

cua_navigate

Navigate to a URL. The target domain must be on the allowlist. Navigation to domains outside the allowlist is blocked by the safety gate (403).

Parameters

cua_navigate parameters
NameTypeRequiredDescription
session_idstringyesActive CUA session ID
urlstringyesTarget URL (must be on allowlisted domain)
wait_forstringnoCSS selector to wait for after navigation

Example

{
  "name": "cua_navigate",
  "arguments": {
    "session_id": "cua_abc123",
    "url": "https://ted.europa.eu/en/notice/-/detail/123456",
    "wait_for": "#notice-content"
  }
}

Errors

cua_navigate error codes
CodeCause
400Missing or malformed URL
403Domain not allowlisted
404Session not found
408wait_for selector not found within timeout

cua_select

Select an option from a dropdown or list element.

Parameters

cua_select parameters
NameTypeRequiredDescription
session_idstringyesActive CUA session ID
targetstringyesCSS selector of the select element
valuestringyesOption value or visible text
descriptionstringnoHuman-readable description

Errors

400 (missing required parameter), 403 (element outside sandbox), 404 (session not found), 408 (element not found within timeout).

cua_submit

Submit a form. This action always requires human confirmation. The system pauses execution and sends a form_confirmation SSE event containing all form field values. The user must approve via /v1/cua/confirm before the submit executes.

Parameters

cua_submit parameters
NameTypeRequiredDescription
session_idstringyesActive CUA session ID
targetstringyesCSS selector of the form or submit button
descriptionstringnoHuman-readable description
Human-in-the-loop Form submissions are never executed automatically. The CUA pauses, sends all field values to the client via SSE, and waits for explicit user confirmation. This ensures no procurement form or regulatory filing is submitted without human review.

Errors

cua_submit error codes
CodeCause
400Missing required parameter
403Element outside sandbox
404Session not found
409Form already submitting (duplicate submit blocked)

cua_wait

Wait for a condition to be met before proceeding. Useful for page transitions, dynamic content loading, and network-dependent elements.

Parameters

cua_wait parameters
NameTypeRequiredDescription
session_idstringyesActive CUA session ID
conditionstringyes"selector", "timeout", "navigation"
targetstringnoCSS selector (required when condition is "selector")
timeoutnumbernoMax wait in ms (default: 10000, max: 30000)

Errors

400 (invalid parameters), 404 (session not found), 408 (condition not met within timeout).

cua_screenshot

Capture a screenshot of the current viewport. Returns a signed URL to the image.

Parameters

cua_screenshot parameters
NameTypeRequiredDescription
session_idstringyesActive CUA session ID
full_pagebooleannoCapture full page (default: false, viewport only)

Response

{
  "screenshot_url": "https://...",
  "width": 1920,
  "height": 1080
}

Errors

400 (invalid parameters), 404 (session not found), 413 (screenshot too large).

Error Codes

All CUA tools return standard HTTP error codes with a JSON error body. The detail field provides a human-readable explanation.

Common error codes across all CUA tools
CodeMeaningDescription
400Invalid parametersMissing or malformed required parameters
403ForbiddenAction blocked by safety gate or domain not allowlisted
404Not foundSession not found or element not found
408TimeoutElement or condition not met within timeout
409ConflictAction already in progress (e.g., duplicate submit)
413Payload too largeScreenshot exceeds maximum size
429Rate limitedToo many requests — retry after Retry-After header

Error response format

{
  "error": {
    "code": 403,
    "type": "domain_not_allowlisted",
    "detail": "Navigation to example.com is not permitted. Only allowlisted domains can be accessed."
  }
}

Support

Technical: support@pauhu.eu

API documentation: pauhu.eu/docs