Se ejecuta enWrit CloudDesktop
En esta página
Describe la tarea. Scribe conduce.
Scribe es la IA de Writ. Dices en lenguaje llano lo que quieres; abre un navegador real, encuentra la página, valida un selector en ella, y construye el monitor, el workflow o el crawl. Trabaja por turnos, y se detiene antes de cualquier cosa que te cueste dinero o toque tus cuentas.
aprobación ▸ se detiene
Se detiene y pregunta. Ese es el diseño.
Una misión avanza por turnos. Cuando necesita algo de ti, se detiene: la sesión pasa a awaiting_input y lleva un pending_request que describe qué espera. Hay tres formas de pausa:
| Pausa | Qué ves |
|---|---|
| Una pregunta | Uno o más campos que necesita que respondas — un umbral, una elección, una confirmación, una identidad de acceso. |
| Una revisión de lote de monitors | Todos los sitios que descubrió, preseleccionados y desmarcables uno a uno, con un coste estimado de puesta en marcha — mostrado antes de crear un solo monitor. |
| Una revisión de conexión | Las URL de endpoint que acaba de publicar, más la oferta de crear una clave API para ellas. |
La compra automática tiene una condición dura, no blanda. Una persona, un método de pago, una confirmación explícita y un umbral deben estar recogidos antes de que redacte nada. Si falta uno, pregunta en vez de seguir.
Dos formas de parar. interrupt corta el turno en curso y aparca la misión — se puede retomar. cancel la termina. Y una respuesta a un turno ya superado recibe 409: relee la sesión y responde al turno actual, no al que estabas mirando.
capacidades ▸ una herramienta por turno
Qué le puedes pedir.
Scribe elige exactamente una herramienta por turno, de un juego fijo. No puede inventarse una herramienta, así que la lista de abajo es todo lo que una misión puede hacer:
| Encontrar y leer una página | Aterrizar en la página correcta, y luego proponer un selector y validarlo contra la página en vivo antes de usarlo. |
| Crear un monitor | Vigilar un precio contra un umbral numérico, o vigilar contenido ante cualquier cambio de texto. Modo: un selector, o una comparación visual píxel a píxel de una zona de captura — así se vigilan gráficos, imágenes, canvas/SVG y logotipos. Render: auto, http o js. |
| Vigilar varios sitios a la vez | Descubrir sitios candidatos, proponer un lote ordenado para tu revisión, y crear un monitor por sitio conservado en un solo turno. |
| Pedirte una entrada | text, value, choice, confirm, secret, persona o payment_method. |
| Iniciar sesión por ti | Enlazar una identidad de acceso guardada y resolver la 2FA, para alcanzar páginas tras un inicio de sesión. |
| Construir un workflow | Redactar un workflow de compra automática, llevar una sesión autónoma que inicia sesión y construye uno, o guardar un workflow a partir de pasos que enuncias explícitamente. Añadir un invocable con nombre. |
| Probarlo y programarlo | Ejecutar el workflow y reportar PASS o FAIL con datos de muestra, y luego configurar una programación. |
| Publicarlo | Exponer el workflow como REST, como superficie compatible con OpenAI, o como MCP — y luego detenerse para enseñarte las URL en vivo. |
| Cablear una automatización | Conectar un cambio detectado con una notificación. |
| Crawlear y responder | Lanzar un crawl de sitio entero con progreso en vivo, plegar un crawl terminado en una sola respuesta, y armar un crawl recurrente o reactivo. |
| Usar lo que ya tienes | Listar, buscar y responder desde datasets que ya recogiste. Es la vía más barata, y va antes de crawlear nada. |
| Terminar | Cerrar la misión con un resumen de lo construido. |
El juego es fijo a propósito. Una IA que solo puede elegir de una lista conocida es una IA cuyo peor turno sigue siendo una herramienta descrita en esta página — así que «¿qué podría llegar a hacer?» tiene una respuesta de longitud finita.
sitios ▸ dos, no uno
Scribe cloud y Scribe de escritorio no son lo mismo.
Hay dos implementaciones, y se diferencian en lo que tienen permitido construir. Lee la fila que corresponde a dónde ejecutas antes de planear una misión sobre ella.
| Dónde | Base | Qué puede construir |
|---|---|---|
| Writ Cloud | /api/ai-concierge | El juego completo — incluidas la redacción de compra automática y los lotes de monitors multisitio. |
| Writ Desktop | /v1/ai-concierge | Vigilar y avisar. Sin redacción de compra automática, sin lotes multisitio. |
| Autoalojado | — | No disponible. Scribe no forma parte del coordinador autoalojado. |
| Llamada | Qué hace |
|---|---|
POST /api/ai-concierge/start | Iniciar una misión. Responde {session_id, status, poll_url} de inmediato; el trabajo sigue en segundo plano. |
GET /api/ai-concierge/{id} | El estado completo de la sesión. Esto es lo que consultas. |
POST /api/ai-concierge/{id}/respond | Responder a la pausa actual. |
POST /api/ai-concierge/{id}/ask | Hacer una pregunta de seguimiento sobre lo que construyó. |
POST /api/ai-concierge/{id}/persona | Enlazar o quitar la identidad de acceso. |
POST /api/ai-concierge/{id}/interrupt | Cortar el turno en curso y aparcar la misión. |
POST /api/ai-concierge/{id}/cancel | Terminar la misión. |
GET /api/ai-concierge | Tus misiones, las más recientes primero. |
En el agente de escritorio
La misma forma, en loopback, contra el agente que corre en tu propia máquina — y gratis, porque el navegador es tuyo:
POST /v1/ai-concierge/start | Iniciar una misión. |
GET /v1/ai-concierge | Listar misiones. |
GET /v1/ai-concierge/{id} | El estado de sesión a consultar. |
POST /v1/ai-concierge/{id}/respond | Responder a la pausa actual. |
POST /v1/ai-concierge/{id}/interrupt · /cancel | Aparcarla, o terminarla. |
Dicho claro: Scribe no forma parte del coordinador autoalojado. Un despliegue autoalojado ejecuta workflows, monitors, automatizaciones y crawls — no incluye Scribe. Si lo que quieres es una construcción guiada por misión, eso es Writ Cloud o Writ Desktop.
sesión ▸ qué consultas
La misión corre en segundo plano. Tú la consultas.
El arranque responde al instante con un id de sesión y una URL de consulta — una misión de navegación sobrevive a una petición HTTP, así que un handle es la respuesta honesta. Cada consulta devuelve la misma proyección:
| Campo | Qué contiene |
|---|---|
session_id · goal · platform | Lo que pediste, y dónde se ejecuta. |
status | planning, browsing, building, proposing, awaiting_input, armed — más los estados terminales. |
phase · progress_message | Por dónde va, en palabras que puedes mostrar a un usuario. |
transcript | La conversación hasta ahora. |
thoughts | La herramienta elegida y un pensamiento breve, por paso. |
plan | Lo que ha decidido hasta ahora. Las referencias de pago se retiran. |
pending_request | La pausa que espera, cuando status es awaiting_input. |
resources | Lo que ha creado — el monitor, el workflow, los endpoints. |
turn_seq | El bloqueo optimista que devuelves al responder. |
tokens | input, output y los créditos gastados hasta ahora. |
error_message · created_at · completed_at | Por qué paró, y cuándo. |
Su razonamiento visible es deliberadamente estrecho: la herramienta elegida y un pensamiento breve. Los argumentos y los resultados de herramienta nunca se emiten en stream — por eso tampoco puede aparecer en el hilo de razonamiento nada de lo que escribiste en un campo secreto.
Arrancar, consultar, responder
Una misión de principio a fin, en HTTP puro.
start.sh
# Describe the job. goal is 3-2000 characters; url is an optional seed.
curl -X POST https://api.usewrit.app/api/ai-concierge/start \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"goal": "Watch the price of the 15-inch model and alert me under $1,200",
"url": "https://example.com/laptops/15"
}' 200 — start
{
"session_id": 4021,
"status": "planning",
"poll_url": "/api/ai-concierge/4021"
}
// The mission runs in the background from here. Poll poll_url.
// Every poll answers the same projection:
{
"session_id": 4021,
"status": "awaiting_input",
"phase": "proposing",
"goal": "...",
"platform": "cloud",
"progress_message": "Found the price on the page.",
"transcript": [],
"thoughts": [ { "tool": "propose_selectors", "thought": "The price sits in the buy box.", "ts": "..." } ],
"plan": {},
"pending_request": { "kind": "text", "requests": [] },
"resources": {},
"turn_seq": 3,
"tokens": { "input": 8120, "output": 940, "credits": 29 },
"error_message": null
} answer.sh
# Poll until status is awaiting_input, then answer the CURRENT turn.
curl https://api.usewrit.app/api/ai-concierge/4021 -H "Authorization: Bearer $WRIT_API_KEY"
# turn_seq is an optimistic lock: send back the one you just read.
# A stale turn_seq answers 409 — re-read and answer the current turn.
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/respond \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"turn_seq": 3, "answers": {"threshold": "1200"}}'
# Ask it a follow-up about what it just built.
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/ask \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"question": "How do I call this endpoint from my own code?"}'
# Attach a saved login identity. null clears it.
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/persona \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"persona_id": 12}'
# Stop mid-turn (the mission parks, resumable) — or end it.
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/interrupt -H "Authorization: Bearer $WRIT_API_KEY"
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/cancel -H "Authorization: Bearer $WRIT_API_KEY"
# Every mission you have run.
curl https://api.usewrit.app/api/ai-concierge -H "Authorization: Bearer $WRIT_API_KEY" respond ▸ responder a una pausa
Responder al turno que tienes delante.
Una respuesta lleva turn_seq y un objeto answers indexado por los campos que pidió la pausa. turn_seq es un bloqueo optimista: devuelve el que leíste. Si la misión avanzó, recibes 409 — refresca y responde al turno actual en vez de pisar uno más nuevo.
| Tipo de entrada | Qué pide |
|---|---|
text | Texto libre. |
value | Un número — un umbral de precio, una cantidad. |
choice | Uno del conjunto que ofrece. |
confirm | Un sí o un no, antes de que algo ocurra. |
secret | Una credencial. Sellada en la bóveda al llegar. |
persona | Qué identidad de acceso guardada usar. |
payment_method | Cómo se pagaría una compra, si estás construyendo una. |
Una respuesta de tipo secret se sella en la bóveda según llega. Lo que alcanza después a una ejecución es un marcador que se resuelve en tiempo de ejecución — el valor en sí no viaja por el plan, ni por la transcripción, ni por el modelo.
Una respuesta puede llevar un campo más, y Scribe nunca lo pide. El pago se recoge como una elección — el modelo no puede reclamar un número de tarjeta. Pero si tú tomas la vía avanzada y escribes uno, esos campos viajan en su propio objeto card_fields en vez de en answers, y se sellan en la bóveda según llegan. Solo alcanzan el plan marcadores, payment_mode pasa a vault_card, y las referencias se retiran después del plan que consultas — el número en sí no viaja por la transcripción ni por el modelo. Si no se puede guardar, la respuesta se rechaza con 400: la pausa sigue abierta, y no se conserva nada.
Lo mismo, en tu propia máquina
Loopback, un token local, y el alcance más estrecho del escritorio — vigilar y avisar.
desktop.sh
curl -X POST http://127.0.0.1:8131/v1/ai-concierge/start \
-H "Authorization: Bearer $WRIT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"goal": "Tell me when this page changes", "url": "https://example.com/status"}'
curl http://127.0.0.1:8131/v1/ai-concierge -H "Authorization: Bearer $WRIT_TOKEN"
curl http://127.0.0.1:8131/v1/ai-concierge/7 -H "Authorization: Bearer $WRIT_TOKEN"
curl -X POST http://127.0.0.1:8131/v1/ai-concierge/7/respond \
-H "Authorization: Bearer $WRIT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"turn_seq": 2, "answers": {"confirm": true}}'
curl -X POST http://127.0.0.1:8131/v1/ai-concierge/7/interrupt -H "Authorization: Bearer $WRIT_TOKEN"
curl -X POST http://127.0.0.1:8131/v1/ai-concierge/7/cancel -H "Authorization: Bearer $WRIT_TOKEN" límites ▸ sin rodeos
Qué no hará Scribe.
Conviene leerlo antes de planear sobre ello. Ninguno de estos puntos es un ajuste que puedas cambiar:
- No hace el pedido — Para una compra, deja el pago preparado hasta el botón de pagar y ahí se detiene. El último clic es tuyo.
- Nunca pide un número de tarjeta — El pago se recoge como una elección — una tarjeta ya guardada en el comercio, el autorrelleno de tu propio navegador en tu propia máquina, o una tarjeta virtual. El modelo no puede pedir un número. Si tomas la vía avanzada e introduces uno tú mismo, se sella en la bóveda según llega y solo un marcador alcanza el plan.
- No puede inventarse una herramienta — Una herramienta por turno, del juego fijo de esta página. No hay acción libre.
- No corre autoalojada — Scribe no forma parte del coordinador autoalojado.
- Scribe de escritorio es más estrecha — Sin redacción de compra automática, y sin lotes de monitors multisitio.
- No emite sus argumentos ni sus resultados — El razonamiento visible es la herramienta elegida y un pensamiento breve. Nada más.
plan ▸ qué cuesta
Qué necesita, y qué gasta.
Scribe necesita un plan que incluya asistencia de IA. El gasto en tokens se mide y se muestra dentro de la propia sesión — el campo tokens lleva input, output y los créditos consumidos hasta ahora, así que una misión larga nunca es una sorpresa al final. Una misión en tu propia máquina conduce tu propio navegador, así que el tiempo de navegador es gratis; los tokens de IA se siguen midiendo.
referencia ▸ siguiente
Lo que Scribe te construye
La vigilancia que crea: tipos de comprobación, modos y cadencia.
→ WorkflowsLos pasos grabados que una misión guarda.
→ Crawlear un sitio enteroEl crawl que puede lanzar y rearmar.
→ Sesiones de IALa sesión de navegación autónoma, por separado.
→ Managed endpointsLas puertas REST, compatibles con OpenAI y MCP que publica.
→ Personas, secretos y agentesLa identidad de acceso con la que inicia sesión.
→faq
Preguntas de Scribe, respondidas.
¿Scribe comprará algo sin preguntarme?
¿Ve Scribe alguna vez el número de mi tarjeta?
¿Puedo ejecutar Scribe en un despliegue autoalojado?
¿Qué cambia en Scribe de escritorio?
Mi llamada respond devolvió 409. ¿Qué pasó?
¿Cuánto de su razonamiento puedo ver?
fin ▸ pídeselo
Describe una tarea y mírala detenerse.
La forma más rápida de entender el modelo de aprobación es arrancar una misión y leer el primer pending_request en el que se detiene.