Python Code Validator

Valida Python generado por IA: sintaxis, lint, escaneo de seguridad y reparación determinista.

Documentación

versión 1.29.0 · API v1

Demuestra que el Python generado por IA hace lo que pediste: sintaxis, lint, tipos, una política de seguridad AST y un escaneo de credenciales, luego ejecuta el código en un contenedor desechable contra los ejemplos que indicas y lo repara hasta que pasen — devolviendo una corrección solo cuando ejecutarlo satisface cada uno de ellos.

code-validationintent-checksecurity-scancode-repairsandboxed-executiona2a

Qué hace

Los agentes autónomos generan código más rápido de lo que cualquiera puede revisarlo, y el código que se equivocan normalmente parsea, hace lint, verifica tipos y se ejecuta — solo que calcula la respuesta incorrecta. Así que este servicio hace la única pregunta que los verificadores no pueden: di qué se suponía que debía hacer el código, como ejemplos, y ejecuta el código contra ellos en un contenedor desechable sin red y con un sistema de archivos de solo lectura. Una corrección regresa solo cuando ejecutarlo satisface cada ejemplo.

{"code": "def bitcount(n): …", "mode": "execute",
 "options": {"examples": "assert bitcount(127) == 7"}}
# → valid: false, python:example-mismatch, and fixed_code once it holds

En el conjunto de defectos QuixBugs — errores reales que nadie aquí inventó, la corrección decidida por entradas de prueba ocultas — eso repara el 41% y rechaza el 77% como que no hacen lo que dicen, sin falsas alarmas en los programas corregidos, donde ruff y mypy marcan el defecto en ninguno de ellos (los números). Todo lo demás que reporta es estático: parseo, lint, tipos, una política de seguridad AST que también detecta llamadas ocultas detrás de importaciones dinámicas y búsquedas de atributos en tiempo de ejecución, y un escaneo de credenciales. Nada se ejecuta a menos que el llamador pida execute.

Preguntar lo mismo dos veces es gratis: una llamada idéntica desde la misma clave dentro de diez minutos se responde con la respuesta que ya obtuvo (x-msvc-repeat: 1) y no se cobra nada, así que un agente puede verificar su trabajo en cada paso sin pagar por veredictos que no pueden haber cambiado.

Idiomas aceptados: python.

Modos

ModoComportamiento
staticNunca ejecuta el código. Parseo, lint, tipos, seguridad, credenciales, una puntuación.
repairEstático, más el código fuente corregido para lo que se puede arreglar sin ejecutarlo.
executeEjecuta el código en un contenedor desechable y lo verifica contra tus ejemplos.

Endpoints

RutaPropósito
POST/v1/validateValidar, reparar o ejecutar un fragmento. Necesita una clave API.
POST/v1/keysEmitir una clave de nivel gratuito. Sin cuenta, sin pago.
POST/mcpPunto de conexión del Protocolo de Contexto de Modelo para agentes de codificación. Necesita una clave API.
GET/v1/infoDescripción legible por máquina, incluidos los esquemas JSON.
GET/v1/clientEl cliente de CI, listo para ejecutar con python3. Sin instalación.
POST/a2aPunto de entrada JSON-RPC de agente a agente. Necesita una clave API.
GET/.well-known/agent.jsonTarjeta de agente A2A para descubrimiento.
GET/docsDocumentación interactiva de OpenAPI.
GET/v1/statsTiempo de actividad, trabajadores, llamadas en curso y totales.
GET/v1/changelogQué cambió en la versión que responde.
GET/healthzSonda de actividad.
GET/metricsMétricas de Prometheus.

Obtén una clave

El nivel gratuito es de autoservicio y no necesita cuenta: un POST devuelve una clave que es válida para una asignación diaria de static validaciones. Las claves de pago elevan el límite y desbloquean repair y execute.

curl -s -X POST https://api.statemind.ai/v1/keys
# {"api_key": "msvc_free_...", "calls_per_day": 100, "modes": ["static"]}

Los créditos cuestan 2 centavos cada uno y se pueden comprar con tarjeta: esto responde con una página de pago, y los créditos llegan a la clave tan pronto como se liquida — sin factura, sin cuenta, sin a quién preguntar. Un agente con una billetera puede pagar en cadena en su lugar; ver /v1/pricing.

curl -s -X POST https://api.statemind.ai/v1/keys/checkout \
  -H 'content-type: application/json' \
  -d '{"api_key": "<your key>", "credits": 500}'

Pruébalo

curl -s https://api.statemind.ai/v1/validate \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"language": "python", "mode": "static", "code": "import os\nos.system(\"id\")\n"}'

Las solicitudes sin una clave válida se rechazan con 401, una clave gratuita agotada con 429, y un modo que el nivel gratuito no cubre con 402. Cada respuesta lleva x-quota-remaining.

Úsalo desde un agente de codificación

El mismo validador es un servidor MCP, así que Claude Code, Cursor, Windsurf, VS Code y cualquier otra cosa que hable MCP sobre HTTP pueden llamarlo como herramienta. Coloca esto en la configuración MCP del cliente:

{
  "mcpServers": {
    "python-code-validator": {
      "url": "https://api.statemind.ai/mcp",
      "headers": { "Authorization": "Bearer msvc_free_..." }
    }
  }
}

Los llamadores de agente a agente en su lugar leen la tarjeta de agente y publican en /a2a.

Úsalo en CI

Las mismas comprobaciones se ejecutan sobre los archivos modificados de una solicitud de extracción. El cliente es solo de biblioteca estándar y el servicio lo entrega, así que no hay nada que instalar ni secreto que configurar — emite su propia clave gratuita. Los hallazgos se imprimen como anotaciones de GitHub, por lo que aparecen en el diff.

curl -sf https://api.statemind.ai/v1/client -o validate.py
python3 validate.py --changed-against origin/main
# ::error file=service.py,line=88,title=SyntaxError::invalid syntax

Paga por llamada, en cadena

El mismo validador responde solicitudes en el Mercado de Mecánicas Olas, así que un agente con billetera no necesita clave ni cuenta. Nombra este mech como el mech prioritario, o el mercado enruta la solicitud a otra persona:

pip install mech-client
mechx request \
  --prompts '{"code": "import os\nos.system(\"id\")\n"}' \
  --tools python_code_validator \
  --priority-mech 0x2D64FEE808Fba217aee1210e3574432C31EdcdAB \
  --chain-config gnosis

El veredicto regresa a través del mercado y se fija en IPFS, lo que hace públicos tanto el código enviado como el veredicto — usa la API HTTP para cualquier cosa que prefieras mantener privada.