Browser Automation MCP Tools
Model Context Protocol tool reference for Pauhu Browser Automation. Automated browser actions for EU procurement and regulatory workflows.
MCP Server Configuration
Add the Pauhu Browser Automation 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://pauhu.eu/v1/mcp",
"transport": "sse",
"headers": {
"Authorization": "Bearer pk_your_api_key"
}
}
}
}
Generate an API key at pauhu.ai/keys. All automation 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 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 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 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 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 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 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 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 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 automation 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