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
| Name | Type | Required | Description |
|---|---|---|---|
session_id | string | yes | Active CUA session ID |
target | string | yes | CSS selector or element description |
coordinates | object | no | { "x": number, "y": number } — pixel coordinates |
description | string | no | Human-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
| Code | Cause |
|---|---|
| 400 | Missing session_id or target |
| 403 | Element outside sandbox |
| 404 | Session not found |
| 408 | Element not found within timeout |
cua_type
Type text into a form field. By default, the field is cleared before typing.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
session_id | string | yes | Active CUA session ID |
target | string | yes | CSS selector or element description |
value | string | yes | Text to type |
clear_first | boolean | no | Clear field before typing (default: true) |
description | string | no | Human-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
| Name | Type | Required | Description |
|---|---|---|---|
session_id | string | yes | Active CUA session ID |
direction | string | yes | "up", "down", "left", "right" |
amount | number | no | Pixels to scroll (default: 300) |
target | string | no | CSS 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
| Name | Type | Required | Description |
|---|---|---|---|
session_id | string | yes | Active CUA session ID |
url | string | yes | Target URL (must be on allowlisted domain) |
wait_for | string | no | CSS 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
| Code | Cause |
|---|---|
| 400 | Missing or malformed URL |
| 403 | Domain not allowlisted |
| 404 | Session not found |
| 408 | wait_for selector not found within timeout |
cua_select
Select an option from a dropdown or list element.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
session_id | string | yes | Active CUA session ID |
target | string | yes | CSS selector of the select element |
value | string | yes | Option value or visible text |
description | string | no | Human-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
| Name | Type | Required | Description |
|---|---|---|---|
session_id | string | yes | Active CUA session ID |
target | string | yes | CSS selector of the form or submit button |
description | string | no | Human-readable description |
Errors
| Code | Cause |
|---|---|
| 400 | Missing required parameter |
| 403 | Element outside sandbox |
| 404 | Session not found |
| 409 | Form 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
| Name | Type | Required | Description |
|---|---|---|---|
session_id | string | yes | Active CUA session ID |
condition | string | yes | "selector", "timeout", "navigation" |
target | string | no | CSS selector (required when condition is "selector") |
timeout | number | no | Max 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
| Name | Type | Required | Description |
|---|---|---|---|
session_id | string | yes | Active CUA session ID |
full_page | boolean | no | Capture 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.
| Code | Meaning | Description |
|---|---|---|
| 400 | Invalid parameters | Missing or malformed required parameters |
| 403 | Forbidden | Action blocked by safety gate or domain not allowlisted |
| 404 | Not found | Session not found or element not found |
| 408 | Timeout | Element or condition not met within timeout |
| 409 | Conflict | Action already in progress (e.g., duplicate submit) |
| 413 | Payload too large | Screenshot exceeds maximum size |
| 429 | Rate limited | Too 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