Se ejecuta enWrit CloudDesktop
En esta página
Cada workflow, una herramienta.
El servidor MCP writ-cloud convierte tu cuenta en herramientas que un agente de IA puede llamar: treinta herramientas integradas para workflows, datos, crawls, monitors y automatizaciones — cada workflow guardado se ejecuta vía writ_run_workflow, y los que fijas aparecen además como su propia herramienta run_<name>. La autenticación es una clave API wt_.
conexión ▸ una sola url
Un servidor para toda la cuenta.
El transporte es Streamable HTTP: cada mensaje es un POST a /mcp en api.usewrit.app — JSON-RPC 2.0, un objeto único o un array batch por solicitud. GET /mcp es una sonda de salud. Autentícate con Authorization: Bearer y una clave API wt_; este endpoint no acepta OAuth.
| Propiedad | Valor |
|---|---|
| Transporte | Streamable HTTP — JSON-RPC 2.0 sobre POST /mcp, objeto único o array batch |
| Versión del protocolo | 2025-03-26 |
| Nombre del servidor | writ-cloud |
| Auth | Authorization: Bearer — una clave API wt_; sin OAuth en este endpoint |
| Salud | GET /mcp |
mcp-client config
{
"mcpServers": {
"writ-cloud": {
"type": "http",
"url": "https://api.usewrit.app/mcp",
"headers": {
"Authorization": "Bearer wt_xxxxxxxxxxxx"
}
}
}
}tools-list.sh
# Confirm the server is reachable and see the tools it exposes
curl -X POST https://api.usewrit.app/mcp \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'GET /api/mcp/connect-info te entrega los dos bloques listos para pegar: la línea del conector npm — claude mcp add writ-cloud -e WRIT_API_KEY=… -- npx -y writ-mcp — y un bloque directo {"type":"http"} de URL + cabecera. En ambos casos la clave viaja en una variable de entorno, nunca en argv.
herramientas ▸ treinta integradas
Treinta herramientas, en cada cuenta.
El conjunto integrado cubre el ciclo que un agente ejecuta de verdad: encontrar un workflow, ejecutarlo, leer y buscar lo que recopiló, programarlo, exponerlo, crawlear, vigilar, automatizar.
| Herramienta | Qué hace |
|---|---|
writ_list_workflows | Lista los workflows guardados — id, nombre, entradas, programación. |
writ_run_workflow | Ejecuta un workflow por id o nombre; espera por defecto y devuelve los datos extraídos. |
writ_pin_workflow_tool | Fija o desfija un workflow guardado como su propia herramienta run_<name> — desactivado por defecto y con tope de 20; cada workflow sigue siendo invocable vía writ_run_workflow. |
writ_workflow_data | Los datos acumulados por un workflow, en columnas y filas. |
writ_search_data | Búsqueda por palabras clave en todo lo que tus workflows recopilaron. |
writ_export_data | La tabla completa en CSV o JSON. |
writ_workflow_runs | El historial de runs de un workflow. |
writ_set_schedule | Programa un workflow: every_minutes, o daily/weekly con hora y días. |
writ_expose_workflow_api | Expone un workflow como endpoint REST; devuelve la URL. |
writ_scrape | Lee el contenido de una página ahora, en una llamada: una página (url), una lista de páginas (urls) o los N primeros elementos de un listado y sus páginas (url + top_n) — markdown limpio con hilos de comentarios anotados por profundidad; persona_id tras un login, use_residential contra muros anti-bots. |
writ_crawl_site | Recopila un sitio o una sección en un conjunto de datos consultable — markdown clásico, registros por esquema o extracción asistida por IA página a página; save_as lo hace reejecutable. |
writ_saved_crawls | Lista los crawls guardados. |
writ_run_saved_crawl | Ejecuta un crawl guardado — o sirve sus datos recientes vía max_age. |
writ_saved_crawl_data | Acceso de solo lectura a los últimos resultados de un crawl guardado. |
writ_crawl_status | El progreso de un crawl en curso. |
writ_crawl_files | Los documentos originales que capturó un crawl — PDF, archivos de oficina, imágenes, CSV — con URL de descarga de corta duración; el dataset del crawl guarda el texto extraído. |
writ_create_automation | Crea una automatización — ejecutar un workflow, notificar o despertar a un agente de IA con un evento. |
writ_create_monitor | Vigila los cambios de una página. |
writ_wire_monitor | Elige qué desencadena un cambio detectado — ejecutar un workflow, notificar o despertar a un agente de IA con una instrucción de tarea. |
writ_personas | Lista y opera las identidades de inicio de sesión guardadas — inspeccionar una, refrescar su sesión o dejar que la IA grabe su flujo de login una vez; pasa un persona_id para ejecutar, crawlear, extraer o navegar con sesión iniciada. Nunca crea, edita ni borra una. |
writ_browser_use | Actúa en un sitio con un navegador real — clic, rellenar, iniciar sesión, enviar; devuelve una observación de la página. Leer una página es writ_scrape. |
writ_record_website | Empieza a grabar una tarea en un sitio, para reproducirla después. |
writ_website_to_api | Convierte un sitio sin API practicable en una API invocable — propone tus propios workflows y las API listas del marketplace antes de grabar nada. |
writ_build | Construye un workflow reutilizable para cualquier tarea web repetible, cuando ningún arranque más específico encaja. |
writ_browser_act | Conduce la sesión — navegar, hacer clic, rellenar, seleccionar, extraer — y devuelve la siguiente observación. Cada acción reproducible queda grabada. |
writ_browser_context | Lee a demanda el DOM limpio, los campos y los enlaces de la página. |
writ_browser_network | Busca en las peticiones que hizo la página, capturadas mientras conduces. |
writ_browser_save | Termina la sesión y guarda sus pasos como workflow reutilizable. |
writ_browser_cancel | Termina la sesión sin guardar nada. |
writ_browser_sessions | Las sesiones de navegador cloud abiertas en esta cuenta, para que un agente retome una por session_id en vez de abrir un segundo navegador al lado. |
La cadencia se aplica, no se ajusta. Un intervalo de monitor por debajo del mínimo de tu plan se rechaza con un error 402 interval_too_short — nunca se recorta en silencio. El agente reintenta con un intervalo mayor.
El cliente conectado es la IA. Una sesión de grabación usa la misma clave: iníciala, condúcela turno a turno con writ_browser_act y termínala con writ_browser_save — o writ_browser_cancel para descartarla. La grabación es automática y el guardado es a demanda: un workflow guardado se reproduce después sin ningún modelo en el bucle. Para un valor sensible define data_key y el paso guardado conserva un placeholder en vez del valor. Dos cosas cambian respecto al conector de escritorio, porque el navegador es nuestro y no tuyo: una herramienta de arranque EXIGE una url (se comprueba contra la política SSRF y de dominios antes de abrir el navegador), y un sitio cuyo inicio de sesión pide un código de un solo uso necesita un persona_id — el código se genera en el servidor a partir de esa identidad guardada y nunca llega al modelo. Una sesión abierta ocupa un navegador cloud real: su tiempo real cuenta contra tu cuota de ejecución hasta que guardes o canceles; una sesión inactiva se recupera automáticamente.
herramientas ▸ fijar un workflow
Cada workflow se ejecuta; los que fijas se vuelven herramientas.
Cada workflow guardado es invocable mediante writ_run_workflow, por id o por nombre. Los que fijas — con writ_pin_workflow_tool, o el interruptor Exponer como herramienta MCP en los ajustes de ejecución del workflow — aparecen además en tools/list como su propia herramienta run_<name>, con su esquema de entrada derivado de las entradas declaradas del workflow. Los nombres se sluguifican; una colisión se deduplica a _2, _3; los nombres integrados writ_* siempre ganan. Fijar está desactivado por defecto y tiene un tope de 20 por cuenta: un cliente MCP inyecta el esquema de cada herramienta anunciada en el contexto del modelo en cada petición, y varios limitan el total (ChatGPT y VS Code a 128; Cursor avisa a partir de unas 40), así que una cuenta con cientos de workflows no debe anunciar cientos de herramientas. Un cliente que conserve una lista anterior puede seguir llamando a un run_<name> sin fijar — el nombre exacto se resuelve como respaldo. writ_run_workflow y cada herramienta de run aceptan los mismos tres controles:
| Control | Por defecto | Qué hace |
|---|---|---|
wait | true | Bloquea hasta que el run se resuelve y devuelve los datos extraídos. |
timeout_seconds | 120 | Máximo que espera la llamada antes de devolver un run aún en curso. |
max_age | 0 | Sirve un resultado reciente exitoso en lugar de reejecutar; 0 siempre ejecuta de nuevo. |
La reutilización solo aplica a resultados exitosos y se basa en las entradas exactas. Las respuestas llevan _cache.hit y _cache.age_seconds, así que un agente siempre distingue una respuesta en caché de una fresca.
reglas ▸ sin puerta lateral
Una llamada de herramienta es una llamada de API.
MCP añade un protocolo, no una puerta lateral. Cada llamada de herramienta se ejecuta exactamente bajo las reglas de la API REST llamada con la misma clave: aislamiento de tenant, scopes de la clave, límites del plan y medición se aplican sin cambios.
publicación ▸ /mcp/{slug}
Servidores publicados en /mcp/{slug}.
Publicar también crea servidores MCP independientes en /mcp/{slug} — Streamable HTTP en POST /mcp/{slug}, con SSE opcional en GET /mcp/{slug}/sse. Aceptan una clave wt_ o un token de acceso OAuth: entregas un workflow a un cliente sin entregarle una clave de cuenta.
OAuth para clientes MCP
Una llamada rechazada responde con WWW-Authenticate cuyo resource_metadata apunta a …/.well-known/oauth-protected-resource/mcp/{slug} — el descubrimiento OAuth estándar de MCP. Los metadatos del servidor de autorización viven en GET /api/oauth/.well-known/oauth-authorization-server, y los clientes se registran solos mediante el registro dinámico RFC 7591 en POST /api/oauth/register — solo clientes públicos con PKCE, sin client secret. Hecho para los conectores personalizados de Claude, Cursor y cualquier cliente que hable este flujo.
Configuración de una herramienta
Cada herramienta publicada es un contrato pequeño; el slug del servidor siempre se deriva del nombre.
| Campo | Regla |
|---|---|
tool_name | cumple ^[a-zA-Z_][a-zA-Z0-9_]*$ — 100 caracteres como máximo |
description | 500 caracteres como máximo — lo que el modelo lee para decidir cuándo llamar |
input_schema | JSON Schema; null lo deriva de las entradas del workflow |
timeout_seconds | 5–300 segundos, 30 por defecto |
Las herramientas MCP publicadas están limitadas por plan (el límite max_mcp_tools) — un tope sobre cuántas herramientas publicas, nunca sobre cuántas veces se llaman:
| Plan | Herramientas MCP publicadas |
|---|---|
| Free | 2 |
| Starter | 5 |
| Pro | 15 |
| Growth | 40 |
| Scale | 100 |
| Enterprise | Ilimitado |
faq