---
title: "Maneja Studio con un agente del navegador"
description: "Registra las acciones de revisión de Verbatra Studio como herramientas WebMCP para que un agente de IA del navegador trabaje en tu panel abierto."
type: "how-to"
---
# Maneja Studio con un agente del navegador

Registra las acciones de revisión de Verbatra Studio como herramientas WebMCP para que un agente de IA del navegador trabaje en tu panel abierto.

Úsalo para que un agente de IA del navegador, como Gemini o Claude en Chrome, revise el desfase, trabaje la cola de revisión y corrija entradas en la pestaña de Studio que tienes abierta. No sirve para configurar el proyecto ni para el acceso remoto.

Necesitas:

- Studio en marcha sobre tu proyecto ([Revisar en Studio](https://verbatra.kreitz-webdev.de/es/docs/review-in-studio.md#arranca-studio));
- Chrome 149 o posterior con `chrome://flags/#enable-webmcp-testing` activado, o un navegador con soporte nativo de WebMCP, en una ventana normal y no headless.

<Callout title="Experimental">
WebMCP es una capacidad nueva del navegador detrás de un flag, y su superficie aún puede cambiar.
</Callout>

## Activa las herramientas [#activa-las-herramientas]

```bash
verbatra studio --expose-agent-tools
```

`VERBATRA_STUDIO_AGENT_TOOLS=1` hace lo mismo; [Gasto y herramientas de agente](https://verbatra.kreitz-webdev.de/es/docs/cli/studio.md#gasto-y-herramientas-de-agente) explica cómo se resuelven el flag y la variable. Abre la URL impresa en el navegador con WebMCP y el agente de esa pestaña encontrará las herramientas. En un navegador sin WebMCP, Studio no registra nada y el panel no cambia.

Para que el agente pueda llamar a tu proveedor, arranca Studio también con `--allow-spend`.

El agente lee cada valor sin ocultar, tal como lo muestra la página, porque un agente en la pestaña puede leer la página de todos modos. Las excepciones son las herramientas de glosario y `verbatra_history_keyRevisions`: sus valores pasan por una redacción de secretos, así que un valor con forma de clave de API vuelve como marcador. Para ocultar los valores a un agente, usa en su lugar el servidor MCP con [`--redact-values`](https://verbatra.kreitz-webdev.de/es/docs/cli/mcp.md#redacted-values); para un proyecto bajo NDA, consulta [Studio y MCP](https://verbatra.kreitz-webdev.de/es/docs/data-handling.md#studio-y-mcp).

## Conoce lo que puede llamar el agente [#conoce-lo-que-puede-llamar-el-agente]

Cada herramienta es una acción de Studio con el prefijo `verbatra_`. Las de lectura se marcan como de solo lectura, las de escritura solo cambian tus archivos locales y las de gasto solo se registran con `--allow-spend`.

### Herramientas de lectura [#herramientas-de-lectura]

| Herramienta | Qué hace |
| --- | --- |
| `verbatra_project_snapshot` | la configuración cargada, las capacidades y, en `capabilities.limits`, los límites de frecuencia de `retranslate`, `reviewDecision` y los dos métodos de reemplazo de valores |
| `verbatra_status_check` | la cobertura por locale |
| `verbatra_status_diff` | las claves faltantes, cambiadas y huérfanas por locale |
| `verbatra_glossary_get` | el glosario resuelto, con los secretos ocultos |
| `verbatra_lock_state` | el estado del archivo de bloqueo por locale |
| `verbatra_history_list` | los commits recientes en los archivos de locale, con el nombre del autor ([nunca el correo](https://verbatra.kreitz-webdev.de/es/docs/data-handling.md#studio-y-mcp)) |
| `verbatra_history_keyRevisions` | los commits de una clave en un locale, con diferencias por palabra, claves ocultas <AvailableFrom version="0.7.0" pkg="@verbatra/studio" /> |
| `verbatra_key_integrity` | las comprobaciones de placeholders, markup e ICU de una clave, en los locales donde cambió su origen |
| `verbatra_review_queue` | cada valor escrito por una máquina que nadie ha aprobado, según los archivos del repositorio <AvailableFrom version="0.6.0" pkg="@verbatra/studio" /> |
| `verbatra_key_value` | el origen y el destino de una clave, con quién escribió el destino |
| `verbatra_key_context` | la descripción, los términos del glosario y el `maxLength` de una clave, y la comprobación de un `draft` opcional <AvailableFrom version="0.6.0" pkg="@verbatra/studio" /> |
| `verbatra_locale_values` | valores de clave por locale de destino, 200 por página por defecto, acotados con `locales`, `keys` o `query` |
| `verbatra_locale_integrity` | cada traducción que no supera las comprobaciones de integridad <AvailableFrom version="0.6.0" pkg="@verbatra/studio" /> |
| `verbatra_translation_estimate` | lo que enviaría y costaría una llamada translate-pending, sin llamar a ningún proveedor |
| `verbatra_usage_summary` | el uso de tokens y el presupuesto de la última ejecución |
| `verbatra_usage_history` | las ejecuciones registradas, la más reciente primero, con tokens, coste y cobertura, solo como cifras <AvailableFrom version="0.7.0" pkg="@verbatra/studio" /> |

### Herramientas de escritura [#herramientas-de-escritura]

| Herramienta | Qué hace |
| --- | --- |
| `verbatra_glossary_write` | cambia un término de un glosario en archivo <AvailableFrom version="0.4.0" pkg="@verbatra/studio" /> |
| `verbatra_review_approve` | registra la aprobación de un valor por una persona con nombre <AvailableFrom version="0.6.0" pkg="@verbatra/studio" /> |
| `verbatra_review_reject` | registra el rechazo de una persona con nombre y elimina el valor |
| `verbatra_translation_editEntry` | escribe un valor a través del control de integridad |

### Herramientas de gasto [#herramientas-de-gasto]

| Herramienta | Qué hace |
| --- | --- |
| `verbatra_translation_retranslateEntry` | vuelve a traducir una clave en un locale |
| `verbatra_translation_translatePending` | traduce todo lo pendiente, opcionalmente solo para algunos `locales` y con un tope de `maxTokens` <AvailableFrom version="0.6.0" pkg="@verbatra/studio" /> |

`verbatra_key_integrity` solo devuelve los locales donde cambió el origen de la clave, así que una lista vacía significa que no había nada que comprobar. Sus filas son más planas que las de [`key.integrity`](https://verbatra.kreitz-webdev.de/es/docs/cli/mcp.md#entradas-y-resultados) en el servidor MCP. Solo el servidor MCP tiene `project.doctor` y `report.provenance`. `verbatra_locale_values` pagina como su `locale.values`, con los mismos `limit` y `cursor` ([Más entradas y resultados](https://verbatra.kreitz-webdev.de/es/docs/cli/mcp.md#más-entradas-y-resultados)).

## Conoce las reglas de las herramientas [#conoce-las-reglas-de-las-herramientas]

Cada llamada pasa por el RPC de loopback autenticado del propio panel, con la misma validación de entrada y el mismo [control de integridad](https://verbatra.kreitz-webdev.de/es/docs/translation-safety.md): un valor que falla una comprobación se rechaza, no se escribe.

### Reglas por llamada [#reglas-por-llamada]

<AvailableFrom version="0.6.0" pkg="@verbatra/studio" />

- **Procedencia**: una edición del agente se registra con el origen `agent` y sigue en la cola de revisión; una edición desde el panel es `human`. Las herramientas de lectura indican quién escribió cada valor ([El archivo de bloqueo](https://verbatra.kreitz-webdev.de/es/docs/the-lock-file.md#procedencia-quién-escribió-cada-valor)).
- **Trabajo humano**: volver a traducir rechaza el valor de una persona con `KEY_PROTECTED` (salvo con `humanEdits: "overwrite"`) y una clave fijada con `KEY_PINNED`, y editar rechaza una clave fijada ([Conserva las traducciones humanas](https://verbatra.kreitz-webdev.de/es/docs/protecting-human-translations.md)).
- **Decisiones de revisión**: aprobar y rechazar solo transmiten tu decisión. Ambas necesitan `reviewer`, el nombre de la persona, y `expectedValue`, el texto revisado; un valor cambiado se rechaza con `REVIEW_VALUE_CHANGED`.
- **Sin herramientas en lote**: **Approve selected**, **Reject selected**, **Retranslate selected**, **Approve all in** y **Search and replace** quedan para personas.
- **Estima primero**: un locale desconocido se rechaza con `UNKNOWN_LOCALE` antes de gastar nada, y se aplica el `maxTokens` más bajo entre la llamada y la configuración ([Estima el coste antes de una ejecución](https://verbatra.kreitz-webdev.de/es/docs/estimating-cost.md)).
- **Límites de frecuencia**: por minuto móvil, 20 retraducciones, 20 ediciones, 20 escrituras del glosario, 60 decisiones de revisión y 5 llamadas translate-pending, de una en una.

## Lee una llamada fallida [#lee-una-llamada-fallida]

Cada herramienta devuelve el envoltorio del panel, así que un fallo se lee `{ "ok": false, "error": { "code": ..., "message": ... } }`. Además de los códigos del SDK, la capa RPC añade:

| Código | Significado |
| --- | --- |
| `REQUEST_INVALID` | la petición o la respuesta no era un envoltorio legible |
| `METHOD_UNKNOWN` | el método no existe en esta versión de Studio |
| `SPEND_DISABLED` | un método de gasto con el gasto desactivado: Studio corre sin `--allow-spend`, o el proveedor es `none`; el mensaje dice cuál |
| `PARAMS_INVALID` | un parámetro no pasó la validación; `issues` nombra cada campo |
| `METHOD_RATE_LIMITED` | se superó el límite; `retryAfterSeconds` indica cuándo cabe la llamada |
| `BATCH_TOO_LARGE` | un lote supera una ventana entera del límite; envía menos entradas |
| `ALREADY_IN_PROGRESS` | una segunda llamada para una entrada que aún está en curso (HTTP 409) |
| `SESSION_EXPIRED` | Studio se reinició con un token nuevo; abre la URL que imprimió |
| `INTERNAL` | un handler falló con un error inesperado (HTTP 500); el mensaje es genérico |

## Arregla las herramientas degradadas [#arregla-las-herramientas-degradadas]

Si el navegador rechaza un registro, cada vista muestra un aviso como:

> Agent tools degraded: 2 of the agent tool registrations failed with SecurityError. The dashboard itself is unaffected. The browser console lists every failing tool.

La consola tiene una línea que nombra cada fallo:

```text output
Verbatra agent tools: 2 of 20 tool registrations failed. verbatra_status_diff (SecurityError: ...); verbatra_key_value (SecurityError: ...)
```

Lee primero ahí el nombre del error y luego recarga la pestaña, que vuelve a ejecutar el registro. Un flag que falta o un navegador sin WebMCP nunca muestran este aviso; no registran nada, en silencio. Una sesión sin `--allow-spend` intenta dos registros menos, y eso no es un fallo.

## Sopesa el riesgo de gasto [#sopesa-el-riesgo-de-gasto]

Las herramientas no añaden exposición de red: Studio sigue escuchando solo en `127.0.0.1`, cada petición lleva el token de sesión y las herramientas que devuelven texto del proyecto lo marcan como no fiable, para que el agente lo trate como datos.

<Callout type="warn">
Con `--allow-spend` y `--expose-agent-tools` a la vez, un agente puede gastar en tu proveedor sin confirmación por llamada, hasta los límites de frecuencia. Studio no distingue la llamada de un agente de tu clic, así que no añade un diálogo de aprobación. Para solo leer y editar, deja `--allow-spend` desactivado.
</Callout>

## Relacionado [#relacionado]

- [Revisar en Studio](https://verbatra.kreitz-webdev.de/es/docs/review-in-studio.md): el mismo flujo, a mano.
- [`verbatra studio`](https://verbatra.kreitz-webdev.de/es/docs/cli/studio.md): cada flag y el contrato de arranque.
- [Conectar un cliente MCP](https://verbatra.kreitz-webdev.de/es/docs/connect-an-mcp-client.md#el-plugin-de-verbatra): el plugin trae la skill `verbatra-studio-agent-tools`, pero Studio lo arrancas tú.
