Skip to content

Atomic

Low-level primitives: file I/O, git, HTTP, shell, SSH, process management, and testing.

44 modules

ModuleDescription
Filtrar arrayFiltrar elementos de array por condicion
Ordenar arrayOrdenar elementos de array en orden ascendente o descendente
Array unicoEliminar valores duplicados del array
OAuth2 Token ExchangeExchange authorization code, refresh token, or client credentials for an access token
Consulta DNSConsulta DNS para registros de dominio
Diferencia de TextoGenerar diferencias entre dos cadenas de texto
Editar ArchivoReemplazar texto en un archivo usando coincidencia exacta de cadenas
Verificar si archivo existeVerificar si un archivo o directorio existe
Leer archivoLeer contenido de un archivo
Escribir archivoEscribir contenido a un archivo
Clonar GitClonar un repositorio git
Confirmar GitCrear un commit git
Diferencia GitObtener diff de git
HTTP PaginateAutomatically iterate through paginated API endpoints and collect all results
Solicitud HTTPEnviar solicitud HTTP y recibir respuesta
Afirmar respuesta HTTPAfirmar y validar propiedades de respuesta HTTP
HTTP SessionSend a sequence of HTTP requests with persistent cookies (login → action → logout)
Webhook WaitStart a temporary server and wait for an incoming webhook callback
Chat LLMInteractuar con APIs de LLM para operaciones inteligentes
Correccion de codigo con IAGenerar automaticamente correcciones de codigo basadas en problemas
CalcularRealizar operaciones matematicas basicas
Chequeo de Salud HTTPChequeo de salud HTTP / monitor de tiempo de actividad
Verificar puertoVerificar si puerto(s) de red estan abiertos o cerrados
Esperar puertoEsperar a que un puerto de red este disponible
Listar procesosListar todos los procesos en segundo plano en ejecucion
Iniciar proceso en segundo planoIniciar un proceso en segundo plano (servidor, servicio, etc.)
Detener procesoDetener un proceso en segundo plano en ejecucion
Ejecutar comando de shellEjecutar un comando de shell y capturar salida
Ejecutar SSHEjecutar comando en servidor remoto vía SSH
Descarga SFTPDescargar archivo del servidor remoto vía SFTP
Subida SFTPSubir archivo al servidor remoto vía SFTP
Ejecutar pasos E2EEjecutar pasos de prueba end-to-end secuencialmente
Puerta de calidadEvaluar metricas de calidad contra umbrales definidos
Ejecutar pruebas HTTPEjecutar suite de pruebas de API HTTP
Ejecutar LinterEjecutar verificaciones de linting en codigo fuente
Generar reporteGenerar reporte de ejecucion de pruebas
Ejecutar escenarioEjecutar prueba basada en escenario (estilo BDD)
Escaneo de seguridadEscanear vulnerabilidades de seguridad
Ejecutar suite de pruebasEjecutar una coleccion de pruebas
Ejecutar pruebas unitariasEjecutar pruebas unitarias
Comparacion visualComparar salidas visuales para diferencias
Evaluar calidad de UIEvaluacion integral de calidad de UI con puntuacion multidimensional
Analizar imagen con IAAnalizar imagenes usando API de Vision de OpenAI (GPT-4V)
Comparar imagenesComparar dos imagenes e identificar diferencias visuales

Modules

Filtrar array

array.filter

Filtrar elementos de array por condicion

Parameters:

NameTypeRequiredDefaultDescription
arrayarrayYes-Array of items to process. Can be numbers, strings, or objects.
conditionselect (eq, ne, gt, gte, lt, lte, contains, startswith, endswith, regex, in, notin, exists, empty, notempty)Yes-How to compare each item against the value
valuestringYes-Value to compare each item against (leave empty for exists/empty checks)

Output:

FieldTypeDescription
filteredarrayArray filtrado
countnumberArray filtrado

Example: Filter numbers greater than 5

yaml
array: [1, 5, 10, 15, 3]
condition: gt
value: 5

Ordenar array

array.sort

Ordenar elementos de array en orden ascendente o descendente

Parameters:

NameTypeRequiredDefaultDescription
arrayarrayYes-Array of items to process. Can be numbers, strings, or objects.
orderselect (asc, desc)NoascDirection to sort items

Output:

FieldTypeDescription
sortedarrayArray ordenado
countnumberArray ordenado

Example: Sort numbers ascending

yaml
array: [5, 2, 8, 1, 9]
order: asc

Array unico

array.unique

Eliminar valores duplicados del array

Parameters:

NameTypeRequiredDefaultDescription
arrayarrayYes-Array of items to process. Can be numbers, strings, or objects.
preserve_orderbooleanNoTrueKeep first occurrence order

Output:

FieldTypeDescription
uniquearrayArray con valores unicos
countnumberArray con valores unicos
duplicates_removednumberArray con valores unicos

Example: Remove duplicates

yaml
array: [1, 2, 2, 3, 4, 3, 5]
preserve_order: true

OAuth2 Token Exchange

auth.oauth2

Exchange authorization code, refresh token, or client credentials for an access token

Parameters:

NameTypeRequiredDefaultDescription
token_urlstringYes-OAuth2 token endpoint URL
grant_typestringNoauthorization_codeOAuth2 grant type
client_idstringYes-OAuth2 application client ID
client_secretstringNo-OAuth2 application client secret
codestringNo-Authorization code received from the OAuth2 authorization flow
redirect_uristringNo-Redirect URI used in the authorization request (must match exactly)
refresh_tokenstringNo-Refresh token for obtaining a new access token
scopestringNo-Space-separated list of OAuth2 scopes
code_verifierstringNo-PKCE code verifier for public clients
client_auth_methodstringNobodyHow to send client credentials to the token endpoint
extra_paramsobjectNo{}Additional parameters to include in the token request
timeoutnumberNo15Maximum time to wait in seconds

Output:

FieldTypeDescription
okbooleanWhether token exchange was successful
access_tokenstringThe access token for API requests
token_typestringToken type (usually "Bearer")
expires_innumberToken lifetime in seconds
refresh_tokenstringRefresh token (if provided by the OAuth2 server)
scopestringGranted scopes
rawobjectFull raw response from the token endpoint
duration_msnumberRequest duration in milliseconds

Example: Exchange authorization code (Google)

yaml
token_url: https://oauth2.googleapis.com/token
grant_type: authorization_code
client_id: ${env.GOOGLE_CLIENT_ID}
client_secret: ${env.GOOGLE_CLIENT_SECRET}
code: 4/0AX4XfWh...
redirect_uri: https://yourapp.com/callback

Example: Refresh an expired token

yaml
token_url: https://oauth2.googleapis.com/token
grant_type: refresh_token
client_id: ${env.GOOGLE_CLIENT_ID}
client_secret: ${env.GOOGLE_CLIENT_SECRET}
refresh_token: ${env.REFRESH_TOKEN}

Example: Client credentials (machine-to-machine)

yaml
token_url: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
grant_type: client_credentials
client_id: ${env.AZURE_CLIENT_ID}
client_secret: ${env.AZURE_CLIENT_SECRET}
scope: https://graph.microsoft.com/.default

Example: GitHub OAuth (code exchange)

yaml
token_url: https://github.com/login/oauth/access_token
grant_type: authorization_code
client_id: ${env.GITHUB_CLIENT_ID}
client_secret: ${env.GITHUB_CLIENT_SECRET}
code: abc123...

Consulta DNS

dns.lookup

Consulta DNS para registros de dominio

Parameters:

NameTypeRequiredDefaultDescription
domainstringYes-Nombre de dominio para consultar
record_typeselect (A, AAAA, CNAME, MX, NS, TXT, SOA, SRV)NoATipo de registro DNS a consultar
timeoutnumberNo10Tiempo de espera de la consulta en segundos

Output:

FieldTypeDescription
okbooleanWhether lookup succeeded
dataobject

Example: A record lookup

yaml
domain: example.com
record_type: A

Example: MX record lookup

yaml
domain: example.com
record_type: MX

Diferencia de Texto

file.diff

Generar diferencias entre dos cadenas de texto

Parameters:

NameTypeRequiredDefaultDescription
originalstringYes-Texto original
modifiedstringYes-Texto modificado
context_linesnumberNo3Número de líneas de contexto alrededor de los cambios
filenamestringNofileNombre de archivo para usar en el encabezado de diferencias

Output:

FieldTypeDescription
diffstringSalida de diferencias unificadas
changedbooleanSi hay cambios
additionsnumberNúmero de líneas añadidas
deletionsnumberNúmero de líneas eliminadas

Example: Diff two strings

yaml
original: hello
world
modified: hello
world!
filename: test.txt

Editar Archivo

file.edit

Reemplazar texto en un archivo usando coincidencia exacta de cadenas

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Ruta al archivo a editar
old_stringstringYes-Texto a encontrar y reemplazar
new_stringstringYes-Texto de reemplazo
replace_allbooleanNoFalseReemplazar todas las ocurrencias en lugar de solo la primera
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Codificación del archivo

Output:

FieldTypeDescription
pathstringRuta del archivo editado
replacementsnumberNúmero de reemplazos realizados
diffstringDiferencias mostrando lo que cambió

Example: Replace string in file

yaml
path: /tmp/example.py
old_string: def hello():
new_string: def hello_world():

Verificar si archivo existe

file.exists

Verificar si un archivo o directorio existe

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file

Output:

FieldTypeDescription
existsbooleanSi la ruta existe
is_filebooleanSi la ruta existe
is_directorybooleanSi la ruta existe

Example: Check file exists

yaml
path: /tmp/data.txt

Leer archivo

file.read

Leer contenido de un archivo

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Character encoding for the file

Output:

FieldTypeDescription
contentstringContenido del archivo
sizenumberContenido del archivo

Example: Read text file

yaml
path: /tmp/data.txt
encoding: utf-8

Escribir archivo

file.write

Escribir contenido a un archivo

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file
contentstringYes-Text content to write to the file
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Character encoding for the file
modeselect (overwrite, append)NooverwriteHow to write content to the file

Output:

FieldTypeDescription
pathstringRuta del archivo
bytes_writtennumberRuta del archivo

Example: Write text file

yaml
path: /tmp/output.txt
content: Hello World
mode: overwrite

Clonar Git

git.clone

Clonar un repositorio git

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL del repositorio Git (HTTPS o SSH)
destinationstringYes-Ruta local para clonar
branchstringNo-Rama a cambiar después de clonar
depthnumberNo-Profundidad del clon superficial (omitir para clon completo)
tokenstringNo-Token de acceso personal para repos privados

Output:

FieldTypeDescription
okbooleanWhether clone succeeded
dataobject

Example: Clone public repository

yaml
url: https://github.com/user/repo.git
destination: /tmp/repo

Example: Shallow clone specific branch

yaml
url: https://github.com/user/repo.git
destination: /tmp/repo
branch: develop
depth: 1

Confirmar Git

git.commit

Crear un commit git

Parameters:

NameTypeRequiredDefaultDescription
repo_pathstringYes-Ruta al repositorio git
messagestringYes-Mensaje del commit
add_allbooleanNoFalsePreparar todos los cambios antes de hacer commit (git add -A)
filesarrayNo-Archivos específicos para preparar antes de hacer commit
author_namestringNo-Sobrescribir el nombre del autor del commit
author_emailstringNo-Sobrescribir el email del autor del commit

Output:

FieldTypeDescription
okbooleanWhether commit succeeded
dataobject

Example: Commit all changes

yaml
repo_path: /home/user/project
message: feat: add user authentication
add_all: true

Example: Commit specific files

yaml
repo_path: /home/user/project
message: fix: correct typo in readme
files: ["README.md"]

Diferencia Git

git.diff

Obtener diff de git

Parameters:

NameTypeRequiredDefaultDescription
repo_pathstringYes-Ruta al repositorio git
ref1stringNoHEADPrimera referencia (commit, rama, etiqueta)
ref2stringNo-Segunda referencia para comparar
stagedbooleanNoFalseMostrar solo cambios preparados (--cached)
stat_onlybooleanNoFalseMostrar solo estadísticas de archivos (--stat)

Output:

FieldTypeDescription
okbooleanWhether diff succeeded
dataobject

Example: Show unstaged changes

yaml
repo_path: /home/user/project

Example: Compare branches

yaml
repo_path: /home/user/project
ref1: main
ref2: feature/login

Example: Show staged changes stats

yaml
repo_path: /home/user/project
staged: true
stat_only: true

HTTP Paginate

http.paginate

Automatically iterate through paginated API endpoints and collect all results

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL to navigate to
methodselect (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)NoGETHTTP request method
headersobjectNo{}HTTP request headers as key-value pairs
authobjectNo-Authentication credentials for the HTTP request
strategystringNooffsetHow the API implements pagination
data_pathstringNo-Dot-notation path to the array of items in the response (e.g. "data", "results", "items")
offset_paramstringNooffsetQuery parameter name for offset
limit_paramstringNolimitQuery parameter name for page size
page_sizenumberNo100Number of items per page
page_paramstringNopageQuery parameter name for page number
start_pagenumberNo1First page number (usually 0 or 1)
cursor_paramstringNocursorQuery parameter name for cursor token
cursor_pathstringNo-Dot-notation path to the next cursor in the response (e.g. "meta.next_cursor", "pagination.next")
max_pagesnumberNo50Maximum number of pages to fetch (safety limit)
delay_msnumberNo0Milliseconds to wait between page requests (rate limiting)
timeoutnumberNo30Maximum time to wait in seconds
verify_sslbooleanNoTrueVerify SSL certificates

Output:

FieldTypeDescription
okbooleanWhether all pages were fetched successfully
itemsarrayAll collected items across all pages
total_itemsnumberTotal number of items collected
pages_fetchednumberNumber of pages fetched
duration_msnumberTotal duration in milliseconds

Example: Offset pagination (REST API)

yaml
url: https://api.example.com/users
strategy: offset
data_path: data
page_size: 100

Example: Page number pagination

yaml
url: https://api.example.com/products
strategy: page
data_path: results
page_param: page
page_size: 50
start_page: 1

Example: Cursor pagination (Slack, Notion)

yaml
url: https://api.notion.com/v1/databases/{db_id}/query
method: POST
strategy: cursor
data_path: results
cursor_path: next_cursor
cursor_param: start_cursor
auth: {"type": "bearer", "token": "${env.NOTION_TOKEN}"}

Example: Link header pagination (GitHub)

yaml
url: https://api.github.com/repos/octocat/hello-world/issues
strategy: link_header
page_size: 100
auth: {"type": "bearer", "token": "${env.GITHUB_TOKEN}"}

Solicitud HTTP

http.request

Enviar solicitud HTTP y recibir respuesta

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL to navigate to
methodselect (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)NoGETHTTP request method
headersobjectNo{}HTTP request headers as key-value pairs
bodyanyNo-HTTP request body content (JSON, text, or form data)
queryobjectNo{}URL query string parameters as key-value pairs
content_typeselect (application/json, application/x-www-form-urlencoded, multipart/form-data, text/plain, text/html, application/xml)Noapplication/jsonContent type of the request body
authobjectNo-Authentication credentials for the HTTP request
timeoutnumberNo30Maximum time to wait in seconds
follow_redirectsbooleanNoTrueAutomatically follow HTTP redirects
verify_sslbooleanNoTrueVerify SSL certificates
response_typeselect (auto, json, text, binary)NoautoHow to parse the response body
retry_countnumberNo0Number of retries on failure or 429/503 status
retry_backoffstringNoexponentialBackoff strategy between retries
retry_delaynumberNo1Initial delay between retries in seconds

Output:

FieldTypeDescription
okbooleanSi la solicitud fue exitosa (estado 2xx)
statusnumberSi la solicitud fue exitosa (estado 2xx)
status_textstringSi la solicitud fue exitosa (estado 2xx)
headersobjectCodigo de estado HTTP
bodyanyTexto de estado HTTP
urlstringHeaders de respuesta
duration_msnumberCuerpo de respuesta (JSON parseado o texto)
content_typestringURL final (despues de redirecciones)
content_lengthnumberContent-Type de respuesta

Example: Simple GET request

yaml
url: https://api.example.com/users
method: GET

Example: POST with JSON body

yaml
url: https://api.example.com/users
method: POST
body: {"name": "John", "email": "john@example.com"}

Example: Request with Bearer auth

yaml
url: https://api.example.com/protected
method: GET
auth: {"type": "bearer", "token": "${env.API_TOKEN}"}

Example: Request with query params

yaml
url: https://api.example.com/search
method: GET
query: {"q": "flyto", "limit": 10}

Afirmar respuesta HTTP

http.response_assert

Afirmar y validar propiedades de respuesta HTTP

Parameters:

NameTypeRequiredDefaultDescription
responseobjectYes-HTTP response object from http.request
statusanyNo-Expected status code (number, array of numbers, or range string "200-299")
body_containsanyNo-String or array of strings that body should contain
body_not_containsanyNo-String or array of strings that body should NOT contain
body_matchesstringYes-Regular expression pattern
json_pathobjectNo-Object mapping JSON paths to expected values (e.g., {"data.id": 123})
json_path_existsarrayNo-Array of JSON paths that should exist
header_containsobjectNo-Object mapping header names to expected values
content_typeselect (application/json, application/x-www-form-urlencoded, multipart/form-data, text/plain, text/html, application/xml)No-Content type of the request body
max_duration_msnumberNo-Maximum allowed response time in milliseconds
schemaobjectNo-JSON Schema to validate response body against
fail_fastbooleanNoFalseStop on first assertion failure

Output:

FieldTypeDescription
okbooleanSi todas las afirmaciones pasaron
passednumberSi todas las afirmaciones pasaron
failednumberSi todas las afirmaciones pasaron
totalnumberNumero de afirmaciones pasadas
assertionsarrayNumero de afirmaciones fallidas
errorsarrayResultados detallados de afirmaciones

Example: Assert status 200

yaml
response: ${http_request.result}
status: 200

Example: Assert JSON structure

yaml
response: ${http_request.result}
status: 200
json_path: {"data.id": "${expected_id}", "data.name": "John"}
json_path_exists: ["data.created_at", "data.email"]

Example: Assert API response

yaml
response: ${api_result}
status: [200, 201]
content_type: application/json
max_duration_ms: 1000
json_path: {"success": true}

HTTP Session

http.session

Send a sequence of HTTP requests with persistent cookies (login → action → logout)

Parameters:

NameTypeRequiredDefaultDescription
requestsarrayYes-Ordered list of HTTP requests to execute with shared cookies
authobjectNo-Authentication applied to all requests in the session
stop_on_errorbooleanNoTrueStop executing remaining requests if one fails (non-2xx)
timeoutnumberNo30Maximum time per individual request
verify_sslbooleanNoTrueVerify SSL certificates

Output:

FieldTypeDescription
okbooleanWhether all requests succeeded
resultsarrayResults from each request in order
cookiesobjectFinal session cookies as key-value pairs
duration_msnumberTotal duration in milliseconds

Example: Login and fetch data

yaml
requests: [{"label": "Login", "url": "https://example.com/api/login", "method": "POST", "body": {"username": "${env.USER}", "password": "${env.PASS}"}}, {"label": "Get Profile", "url": "https://example.com/api/profile", "method": "GET"}]
stop_on_error: true

Example: CSRF token flow

yaml
requests: [{"label": "Get CSRF Token", "url": "https://example.com/csrf-token", "method": "GET"}, {"label": "Submit Form", "url": "https://example.com/api/submit", "method": "POST", "body": {"data": "value"}}]

Webhook Wait

http.webhook_wait

Start a temporary server and wait for an incoming webhook callback

Parameters:

NameTypeRequiredDefaultDescription
pathstringNo/webhookURL path to listen on (e.g. /webhook, /callback)
portnumberNo0Port to listen on (0 = auto-assign)
timeoutnumberNo300Maximum time to wait for the webhook callback
use_ngrokbooleanNoFalseCreate an ngrok tunnel for public access (requires pyngrok)
ngrok_tokenstringNo-ngrok authentication token (free at ngrok.com)
expected_methodstringNoPOSTOnly accept this HTTP method (empty = accept any)
response_statusnumberNo200HTTP status code to respond with when webhook is received
response_bodystringNo{"ok": true}Response body to send back to the webhook caller

Output:

FieldTypeDescription
okbooleanWhether webhook was received before timeout
webhook_urlstringThe URL to send webhooks to (public if ngrok enabled)
methodstringHTTP method of the received webhook
headersobjectHeaders from the received webhook
bodyanyBody from the received webhook (parsed JSON or raw text)
queryobjectQuery parameters from the received webhook
duration_msnumberTime waited for the webhook in milliseconds

Example: Wait for Stripe webhook (local)

yaml
path: /webhook/stripe
port: 8765
timeout: 120
use_ngrok: false

Example: Wait for webhook with ngrok tunnel

yaml
path: /webhook
timeout: 300
use_ngrok: true
ngrok_token: ${env.NGROK_AUTH_TOKEN}

Chat LLM

llm.chat

Interactuar con APIs de LLM para operaciones inteligentes

Parameters:

NameTypeRequiredDefaultDescription
promptstringYes-The prompt or question to send to the AI model
system_promptstringNo-System instructions to set AI behavior and context
contextobjectNo-Additional context data to include
messagesarrayNo-Previous messages for multi-turn conversation
providerselect (openai, anthropic, ollama)NoopenaiAI model provider
modelstringNogpt-4oSpecific model to use
temperaturenumberNo0.7Creativity level (0=deterministic, 1=creative)
max_tokensnumberNo2000Maximum tokens in response
response_formatselect (text, json, code, markdown)NotextExpected format of the AI response
api_keystringNo-API key (defaults to provider env var)
base_urlstringNo-Custom API base URL (for Ollama or proxies)

Output:

FieldTypeDescription
okbooleanSi la solicitud tuvo exito
responsestringSi la solicitud tuvo exito
parsedanySi la solicitud tuvo exito
modelstringEl texto de respuesta del LLM
tokens_usednumberRespuesta parseada (si se solicito formato JSON)
finish_reasonstringModelo usado

Example: Code Review

yaml
prompt: Review this code for bugs and improvements:

${code}
system_prompt: You are an expert code reviewer. Be specific and actionable.
model: gpt-4o

Example: Generate Fix

yaml
prompt: The UI evaluation found these issues: ${issues}

Generate code fixes.
system_prompt: You are a frontend developer. Return only valid code.
response_format: code

Example: Decision Making

yaml
prompt: Based on these test results, should we deploy? ${test_results}
system_prompt: You are a DevOps engineer. Return JSON: {"decision": "yes/no", "reason": "..."}
response_format: json

Correccion de codigo con IA

llm.code_fix

Generar automaticamente correcciones de codigo basadas en problemas

Parameters:

NameTypeRequiredDefaultDescription
issuesarrayYes-List of issues to fix (from ui.evaluate, test results, etc.)
source_filesarrayYes-Files to analyze and potentially fix
fix_modeselect (suggest, apply, dry_run)NosuggestHow to handle the suggested fixes
backupbooleanNoTrueCreate .bak backup before modifying files
contextstringNo-Text content to process
modelstringNogpt-4oSpecific model to use
api_keystringNo-API key (defaults to provider env var)

Output:

FieldTypeDescription
okbooleanSi la operacion tuvo exito
fixesarraySi la operacion tuvo exito
appliedarraySi la operacion tuvo exito
failedarrayLista de correcciones generadas
summarystringLista de correcciones aplicadas (si fix_mode es apply)

Example: Fix UI Issues

yaml
issues: ${ui_evaluation.issues}
source_files: ["./src/components/Footer.tsx", "./src/styles/footer.css"]
fix_mode: suggest
context: React + Tailwind CSS project

Example: Auto-fix and Apply

yaml
issues: ${test_results.failures}
source_files: ["./src/App.tsx"]
fix_mode: apply
backup: true

Calcular

math.calculate

Realizar operaciones matematicas basicas

Parameters:

NameTypeRequiredDefaultDescription
operationselect (add, subtract, multiply, divide, power, modulo, sqrt, abs)Yes-Operation to perform
anumberYes-First operand
bnumberNo-Second operand (not required for sqrt and abs)
precisionnumberNo2Number of decimal places

Output:

FieldTypeDescription
resultnumberResultado del calculo
operationstringResultado del calculo
expressionstringResultado del calculo

Example: Add two numbers

yaml
operation: add
a: 10
b: 5

Example: Calculate power

yaml
operation: power
a: 2
b: 8

Chequeo de Salud HTTP

monitor.http_check

Chequeo de salud HTTP / monitor de tiempo de actividad

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL para verificar
methodselect (GET, HEAD, POST)NoGETMétodo HTTP
expected_statusnumberNo200Código de estado HTTP esperado
timeout_msnumberNo10000Tiempo de espera de la solicitud en milisegundos
headersobjectNo-Encabezados personalizados de la solicitud
bodystringNo-Cuerpo de la solicitud (para POST)
check_sslbooleanNoTrueVerificar validez y expiración del certificado SSL
containsstringNo-El cuerpo de la respuesta debe contener esta cadena
follow_redirectsbooleanNoTrueSeguir redirecciones HTTP

Output:

FieldTypeDescription
okbooleanWhether check completed
dataobject

Example: Basic health check

yaml
url: https://api.example.com/health
expected_status: 200

Example: Check with content validation

yaml
url: https://api.example.com/health
contains: "status":"ok"
timeout_ms: 5000

Verificar puerto

port.check

Verificar si puerto(s) de red estan abiertos o cerrados

Parameters:

NameTypeRequiredDefaultDescription
portanyYes-Numero de puerto o array de puertos a verificar
hoststringNolocalhostNumero de puerto o array de puertos a verificar
connect_timeoutnumberNo2Host al que conectarse
expect_openbooleanNo-Tiempo de espera para cada intento de conexion

Output:

FieldTypeDescription
okbooleanEstablecer a true para verificar que los puertos estan abiertos, false para cerrados
resultsarraySi todas las verificaciones pasaron (si expect_open esta establecido)
open_portsarraySi todas las verificaciones pasaron (si expect_open esta establecido)
closed_portsarrayArray de resultados de verificacion de puertos
summaryobjectLista de puertos abiertos

Example: Check single port

yaml
port: 3000

Example: Check multiple ports

yaml
port: [3000, 8080, 5432]
host: localhost

Example: Assert ports are open

yaml
port: [80, 443]
host: example.com
expect_open: true

Esperar puerto

port.wait

Esperar a que un puerto de red este disponible

Parameters:

NameTypeRequiredDefaultDescription
portnumberYes-Numero de puerto a esperar
hoststringNolocalhostHost al que conectarse
timeoutnumberNo60Host al que conectarse
intervalnumberNo500Tiempo maximo de espera
expect_closedbooleanNoFalseTiempo entre intentos de conexion en milisegundos

Output:

FieldTypeDescription
okbooleanEsperar a que el puerto no este disponible en su lugar
availablebooleanSi el puerto esta en el estado esperado
hoststringSi el puerto esta en el estado esperado
portnumberSi el puerto esta actualmente disponible
wait_time_msnumberHost que fue verificado
attemptsnumberPuerto que fue verificado

Example: Wait for dev server

yaml
port: 3000
timeout: 30

Example: Wait for database

yaml
port: 5432
host: localhost
timeout: 60

Example: Wait for port to close

yaml
port: 8080
expect_closed: true
timeout: 10

Listar procesos

process.list

Listar todos los procesos en segundo plano en ejecucion

Parameters:

NameTypeRequiredDefaultDescription
filter_namestringNo-Filter processes by name (substring match)
include_statusbooleanNoTrueInclude running/stopped status check for each process

Output:

FieldTypeDescription
okbooleanExito de la operacion
processesarrayExito de la operacion
countnumberExito de la operacion
runningnumberLista de informacion de procesos
stoppednumberNumero total de procesos

Example: List all processes

yaml

Example: Filter by name

yaml
filter_name: dev

Iniciar proceso en segundo plano

process.start

Iniciar un proceso en segundo plano (servidor, servicio, etc.)

Parameters:

NameTypeRequiredDefaultDescription
commandstringYes-Shell command to execute
cwdstringNo-Directory to execute command in
envobjectNo-Additional environment variables to set
namestringNo-Friendly name to identify the process
wait_for_outputstringNo-String to wait for in stdout before returning
wait_timeoutnumberNo60Maximum time to wait in seconds
capture_outputbooleanNoTrueCapture stdout/stderr output from the process
log_filestringNo-File path to write process output to
auto_restartbooleanNoFalseAutomatically restart the process if it exits

Output:

FieldTypeDescription
okbooleanSi el proceso inicio exitosamente
pidnumberSi el proceso inicio exitosamente
process_idstringSi el proceso inicio exitosamente
namestringID del proceso
commandstringIdentificador interno de proceso para process.stop
cwdstringNombre del proceso
started_atstringEl comando ejecutado
initial_outputstringMarca de tiempo ISO cuando inicio el proceso

Example: Start dev server

yaml
command: npm run dev
cwd: ./frontend
name: frontend-dev
wait_for_output: ready on
wait_timeout: 30

Example: Start Python HTTP server

yaml
command: python -m http.server 8000
name: static-server

Example: Start with environment

yaml
command: node server.js
env: {"PORT": "3000", "NODE_ENV": "test"}
name: api-server
wait_for_output: listening

Detener proceso

process.stop

Detener un proceso en segundo plano en ejecucion

Parameters:

NameTypeRequiredDefaultDescription
process_idstringNo-Internal process identifier (from process.start)
namestringNo-Friendly name to identify the process
pidnumberNo-System process ID (PID) of the process
signalselect (SIGTERM, SIGKILL, SIGINT)NoSIGTERMSignal to send to the process
timeoutnumberNo10Maximum time to wait in seconds
forcebooleanNoFalseForce kill the process immediately with SIGKILL
stop_allbooleanNoFalseStop all tracked processes

Output:

FieldTypeDescription
okbooleanSi todos los procesos fueron detenidos exitosamente
stoppedarraySi todos los procesos fueron detenidos exitosamente
failedarrayLista de informacion de procesos detenidos
countnumberLista de informacion de procesos detenidos

Example: Stop by process ID

yaml
process_id: ${start_result.process_id}

Example: Stop by name

yaml
name: dev-server

Example: Force kill by PID

yaml
pid: 12345
force: true

Example: Stop all processes

yaml
stop_all: true

Ejecutar comando de shell

shell.exec

Ejecutar un comando de shell y capturar salida

Parameters:

NameTypeRequiredDefaultDescription
commandstringYes-Shell command to execute
cwdstringNo-Directory to execute command in
envobjectNo-Additional environment variables to set
timeoutnumberNo300Maximum time to wait in seconds
shellbooleanNoFalseExecute command through shell (enables pipes, redirects)
capture_stderrbooleanNoTrueCapture stderr separately from stdout
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Character encoding for the file
raise_on_errorbooleanNoFalseRaise exception if command returns non-zero exit code

Output:

FieldTypeDescription
okbooleanSi el comando se ejecuto exitosamente (codigo de salida 0)
exit_codenumberSi el comando se ejecuto exitosamente (codigo de salida 0)
stdoutstringSi el comando se ejecuto exitosamente (codigo de salida 0)
stderrstringCodigo de salida del comando
commandstringSalida estandar
cwdstringSalida de error estandar
duration_msnumberEl comando ejecutado

Example: Run npm install

yaml
command: npm install
cwd: ./my-project

Example: Run tests with pytest

yaml
command: python -m pytest tests/ -v
timeout: 120

Example: Git status

yaml
command: git status --porcelain

Example: Build project

yaml
command: npm run build
cwd: ./frontend
env: {"NODE_ENV": "production"}

Ejecutar SSH

ssh.exec

Ejecutar comando en servidor remoto vía SSH

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-Nombre de host o IP del servidor SSH
portnumberNo22Puerto SSH
usernamestringYes-Usuario SSH
passwordstringNo-Contraseña SSH
private_keystringNo-Clave privada en formato PEM
commandstringYes-Comando a ejecutar en el servidor remoto
timeoutnumberNo30Tiempo de espera del comando en segundos

Output:

FieldTypeDescription
okbooleanWhether command succeeded
dataobject

Example: List files on remote server

yaml
host: 192.168.1.100
username: deploy
command: ls -la /var/www

Example: Restart service

yaml
host: 10.0.0.5
username: root
command: systemctl restart nginx

Descarga SFTP

ssh.sftp_download

Descargar archivo del servidor remoto vía SFTP

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-Nombre de host o IP del servidor SSH
portnumberNo22Puerto SSH
usernamestringYes-Usuario SSH
passwordstringNo-Contraseña SSH
private_keystringNo-Clave privada en formato PEM
remote_pathstringYes-Ruta al archivo en el servidor remoto
local_pathstringYes-Ruta de destino en la máquina local

Output:

FieldTypeDescription
okbooleanWhether download succeeded
dataobject

Example: Download server log

yaml
host: 10.0.0.5
username: deploy
remote_path: /var/log/nginx/access.log
local_path: /tmp/access.log

Subida SFTP

ssh.sftp_upload

Subir archivo al servidor remoto vía SFTP

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-Nombre de host o IP del servidor SSH
portnumberNo22Puerto SSH
usernamestringYes-Usuario SSH
passwordstringNo-Contraseña SSH
private_keystringNo-Clave privada en formato PEM
local_pathstringYes-Ruta del archivo local a subir
remote_pathstringYes-Ruta de destino en el servidor remoto
overwritebooleanNoTrueSobrescribir archivo remoto existente

Output:

FieldTypeDescription
okbooleanWhether upload succeeded
dataobject

Example: Upload deployment archive

yaml
host: 10.0.0.5
username: deploy
local_path: /tmp/app.tar.gz
remote_path: /opt/releases/app.tar.gz

Ejecutar pasos E2E

testing.e2e.run_steps

Ejecutar pasos de prueba end-to-end secuencialmente

Parameters:

NameTypeRequiredDefaultDescription
stepsarrayYes-Array de definiciones de pasos de prueba
stop_on_failurebooleanNoTrueWhether to stop on failure
timeout_per_stepnumberNo30000Timeout Per Step value

Output:

FieldTypeDescription
okbooleanSi la operacion tuvo exito
passednumberSi la operacion tuvo exito
failednumberSi la operacion tuvo exito
resultsarrayNumero de pruebas pasadas

Puerta de calidad

testing.gate.evaluate

Evaluar metricas de calidad contra umbrales definidos

Parameters:

NameTypeRequiredDefaultDescription
metricsobjectYes-Metricas a evaluar
thresholdsobjectYes-Metricas a evaluar
fail_on_breachbooleanNoTrueWhether to fail on breach

Output:

FieldTypeDescription
okbooleanValores de umbral para cada metrica
passedbooleanSi la operacion tuvo exito
resultsarraySi la operacion tuvo exito
summarystringNumero de pruebas pasadas

Ejecutar pruebas HTTP

testing.http.run_suite

Ejecutar suite de pruebas de API HTTP

Parameters:

NameTypeRequiredDefaultDescription
testsarrayYes-Array de definiciones de pruebas HTTP
base_urlstringNo-Base URL for API requests
headersobjectNo{}HTTP request headers

Output:

FieldTypeDescription
okbooleanSi la operacion tuvo exito
passednumberSi la operacion tuvo exito
failednumberSi la operacion tuvo exito
resultsarrayNumero de pruebas pasadas

Ejecutar Linter

testing.lint.run

Ejecutar verificaciones de linting en codigo fuente

Parameters:

NameTypeRequiredDefaultDescription
pathsarrayYes-Archivos o directorios a verificar
linterstringNoautoLinter
fixbooleanNoFalseWhether to fix

Output:

FieldTypeDescription
okbooleanSi la operacion tuvo exito
errorsnumberSi la operacion tuvo exito
warningsnumberSi la operacion tuvo exito
issuesarrayNumero de errores encontrados

Generar reporte

testing.report.generate

Generar reporte de ejecucion de pruebas

Parameters:

NameTypeRequiredDefaultDescription
resultsobjectYes-Results data
formatstringNojsonFormat
titlestringNoTest ReportTitle

Output:

FieldTypeDescription
okbooleanSi la operacion tuvo exito
reportstringSi la operacion tuvo exito
formatstringSi la operacion tuvo exito
summaryobjectEl reporte

Ejecutar escenario

testing.scenario.run

Ejecutar prueba basada en escenario (estilo BDD)

Parameters:

NameTypeRequiredDefaultDescription
scenarioobjectYes-Definicion de escenario con given/when/then
contextobjectNo{}Additional context data

Output:

FieldTypeDescription
okbooleanDefinicion de escenario con given/when/then
passedbooleanSi la operacion tuvo exito
stepsarraySi la operacion tuvo exito

Escaneo de seguridad

testing.security.scan

Escanear vulnerabilidades de seguridad

Parameters:

NameTypeRequiredDefaultDescription
targetsarrayYes-Archivos, URLs o rutas a escanear
scan_typestringNoallScan Type
severity_thresholdstringNomediumSeverity Threshold

Output:

FieldTypeDescription
okbooleanSi la operacion tuvo exito
vulnerabilitiesarraySi la operacion tuvo exito
summaryobjectSi la operacion tuvo exito

Ejecutar suite de pruebas

testing.suite.run

Ejecutar una coleccion de pruebas

Parameters:

NameTypeRequiredDefaultDescription
testsarrayYes-Array de definiciones de pruebas
parallelbooleanNoFalseWhether to parallel
max_failuresnumberNo0Array de definiciones de pruebas

Output:

FieldTypeDescription
okboolean0 = sin limite
passednumber0 = sin limite
failednumberSi la operacion tuvo exito
skippednumberNumero de pruebas pasadas
resultsarrayNumero de pruebas fallidas

Ejecutar pruebas unitarias

testing.unit.run

Ejecutar pruebas unitarias

Parameters:

NameTypeRequiredDefaultDescription
pathsarrayYes-Rutas a archivos o directorios de prueba
patternstringNotest_*.pyPattern
verbosebooleanNoFalseWhether to verbose

Output:

FieldTypeDescription
okbooleanSi la operacion tuvo exito
passednumberSi la operacion tuvo exito
failednumberSi la operacion tuvo exito
errorsnumberNumero de pruebas pasadas
resultsarrayNumero de pruebas fallidas

Comparacion visual

testing.visual.compare

Comparar salidas visuales para diferencias

Parameters:

NameTypeRequiredDefaultDescription
actualstringYes-Ruta o base64 de imagen actual
expectedstringYes-Ruta o base64 de imagen actual
thresholdnumberNo0.1Ruta o base64 de imagen esperada
output_diffbooleanNoTrueWhether to output diff

Output:

FieldTypeDescription
okbooleanDiferencia maxima permitida (0-1)
matchbooleanSi la operacion tuvo exito
differencenumberSi la operacion tuvo exito
diff_imagestringEl coincidente

Evaluar calidad de UI

ui.evaluate

Evaluacion integral de calidad de UI con puntuacion multidimensional

Parameters:

NameTypeRequiredDefaultDescription
screenshotstringYes-Ruta o URL de captura de pantalla a evaluar
app_typestringNoweb_appRuta o URL de captura de pantalla a evaluar
page_typestringNo-Tipo de pagina siendo evaluada
evaluation_criteriaarrayNo['visual_design', 'usability', 'accessibility', 'consistency', 'responsiveness']Criterios especificos a evaluar (por defecto todos)
target_audiencestringNo-Descripcion de usuarios objetivo
brand_guidelinesstringNo-Breve guia de marca para verificar contra
min_scorenumberNo70Puntuacion minima general para pasar (0-100)
api_keystringNo-Clave API de OpenAI (por defecto usa OPENAI_API_KEY env var)

Output:

FieldTypeDescription
okbooleanClave API de OpenAI (por defecto usa OPENAI_API_KEY env var)
passedbooleanSi la evaluacion tuvo exito
overall_scorenumberSi la evaluacion tuvo exito
scoresobjectPuntuacion general de calidad de UI (0-100)
strengthsarrayPuntuacion general de calidad de UI (0-100)
issuesarrayPuntuaciones por criterios de evaluacion
recommendationsarrayLista de fortalezas de UI
summarystringRecomendaciones especificas de mejora

Example: Evaluate Dashboard

yaml
screenshot: ./screenshots/dashboard.png
app_type: dashboard
page_type: analytics dashboard
target_audience: business analysts
min_score: 75

Example: E-commerce Page Review

yaml
screenshot: ./screenshots/product.png
app_type: e_commerce
page_type: product detail
evaluation_criteria: ["usability", "cta_effectiveness", "visual_design"]

Analizar imagen con IA

vision.analyze

Analizar imagenes usando API de Vision de OpenAI (GPT-4V)

Parameters:

NameTypeRequiredDefaultDescription
imagestringYes-Image file path, URL, or base64 data
promptstringYes-What to analyze in the image
analysis_typeselect (general, ui_review, accessibility, bug_detection, comparison, data_extraction)NogeneralType of analysis to perform
contextstringNo-Additional context about the image
output_formatselect (text, structured, json, checklist)NostructuredFormat of the analysis output
modelstringNogpt-4oSpecific model to use
max_tokensnumberNo1000Maximum tokens in response
api_keystringYes-API key for authentication
header_namestringNoX-API-KeyHTTP header name
detailselect (low, high, auto)NohighLevel of detail for image analysis

Output:

FieldTypeDescription
okbooleanSi el analisis tuvo exito
analysisstringSi el analisis tuvo exito
structuredobjectEl resultado del analisis de IA
modelstringDatos de analisis estructurado (si output_format es structured/json)
tokens_usednumberModelo usado para analisis

Example: UI Review

yaml
image: ./screenshots/dashboard.png
prompt: Review this dashboard UI. Evaluate: 1) Visual hierarchy 2) Color contrast 3) Button visibility 4) Overall usability. Suggest specific improvements.
analysis_type: ui_review
output_format: structured

Example: Bug Detection

yaml
image: ./screenshots/form.png
prompt: Find any visual bugs, layout issues, or broken elements in this form
analysis_type: bug_detection

Example: Accessibility Check

yaml
image: ./screenshots/page.png
prompt: Evaluate accessibility: color contrast, text readability, button sizes, clear labels
analysis_type: accessibility

Comparar imagenes

vision.compare

Comparar dos imagenes e identificar diferencias visuales

Parameters:

NameTypeRequiredDefaultDescription
image_beforestringYes-Path to baseline/before image
image_afterstringYes-Path to current/after image
comparison_typeselect (visual_regression, layout_diff, content_diff, full_analysis)Novisual_regressionType of comparison to perform
thresholdnumberNo5Acceptable difference percentage
focus_areasarrayNo-Specific areas to focus on
ignore_areasarrayNo-Areas to ignore (dynamic content, ads, etc.)
modelstringNogpt-4oSpecific model to use
api_keystringYes-API key for authentication
header_namestringNoX-API-KeyHTTP header name

Output:

FieldTypeDescription
okbooleanSi la comparacion tuvo exito
has_differencesbooleanSi la comparacion tuvo exito
similarity_scorenumberSi se encontraron diferencias significativas
differencesarrayPorcentaje de similitud (0-100)
summarystringLista de diferencias identificadas
recommendationstringResumen de resultados de comparacion

Example: Visual Regression Test

yaml
image_before: ./screenshots/baseline/home.png
image_after: ./screenshots/current/home.png
comparison_type: visual_regression
threshold: 5

Example: Layout Comparison

yaml
image_before: ./design/mockup.png
image_after: ./screenshots/implementation.png
comparison_type: layout_diff
focus_areas: ["header", "main content"]

Released under the Apache 2.0 License.