zyta-sign-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zyta-sign-mcplog in to Zyta"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
zyta-sign-mcp
Servidor Model Context Protocol (stdio) que expone tus documentos, firmas y estudios de Zyta Sign a un agente como Claude Desktop, Cursor o Codex CLI — respetando tus permisos exactos.
Instalación rápida (cualquier usuario)
{
"mcpServers": {
"zyta": {
"command": "npx",
"args": ["-y", "zyta-sign-mcp"],
"env": {
"KAIRO_BASE_URL": "https://sign.zyta.app",
"KAIRO_CLIENT_LABEL": "Cursor"
}
}
}
}Pegá eso en
.cursor/mcp.json(Cursor) oclaude_desktop_config.json(Claude)Recargá MCP → conectado
En el chat: "logueate en zyta" → el agente llama
kairo_login→ autorizás en/device
No hace falta clonar repos ni rutas locales. Solo Node.js 18+.
Nota: el paquete npm se llama
zyta-sign-mcp(el nombrekairo-mcpya está ocupado en npm por otro proyecto). Las herramientas siguen usando el prefijokairo_*.
Related MCP server: signbee-mcp
Autenticación (login obligatorio)
Sin sesión autenticada, todas las herramientas fallan — salvo kairo_login y
kairo_disconnect. No hay auto-login silencioso por variables de entorno: el token
KAIRO_API_TOKEN solo se usa si lo pasás explícitamente a kairo_login({ access_token })
(o como fallback dentro de esa herramienta). Los permisos los determina el usuario del
token: el agente no puede hacer más de lo que podés hacer vos en el dashboard.
Device Authorization Flow (recomendado, estilo gh auth login)
El MCP conecta al instante (stdio) sin bloquear en login. Cuando el agente necesita
operar, llama a kairo_login:
Se abre el navegador en
/device?user_code=XXXX-XXXXAutorizás con tu cuenta (o email/contraseña si no tenés sesión web)
El agente recibe el token y responde en el chat: "Sesión OK como Juan…"
El token queda en
~/.kairo/credentials-*.json(sesiones posteriores se reutilizan)
No hace falta copiar/pegar secretos en mcp.json.
Cursor (recomendado)
Levantá la app:
cd kairo-sign
npm run dev # :3000Configurá
.cursor/mcp.json(proyecto o global):
{
"mcpServers": {
"zyta": {
"command": "npx",
"args": ["-y", "zyta-sign-mcp"],
"env": {
"KAIRO_BASE_URL": "http://localhost:3000",
"KAIRO_CLIENT_LABEL": "Cursor"
}
}
}
}Cursor → Settings → MCP → Reload →
kairoconectado (verde)En el chat: "logueate en kairo" o el agente llama
kairo_loginAutorizás en el browser → mensaje en Cursor (hook) y/o respuesta de
kairo_login
Al autorizar en /device, se escribe .cursor/kairo-auth-complete.json y un hook de Cursor muestra en el chat que la sesión quedó lista (al terminar la respuesta del agente o al enviar el próximo mensaje).
Smoke test device flow: cd kairo-sign && npx tsx scripts/smoke-device-auth.ts
Bridge local (misma PC, alternativa al device flow)
Si desarrollás con el dashboard y Cursor en la misma máquina, podés sincronizar la
sesión del navegador al MCP sin abrir /device:
cd kairo-sign && npm run agent:setup— genera un secreto compartido en.env.localy.cursor/mcp.json(KAIRO_AGENT_BRIDGE_SECRET)Reiniciá
npm run devy recargá el MCP en CursorLogueate en el dashboard → el front hace POST al puente local (
127.0.0.1:9322) y el agente queda autenticado solo
El puente no reemplaza el login obligatorio: solo copia el token cuando ya iniciaste
sesión en el browser. En producción remota seguí usando kairo_login (device flow).
Token manual (alternativa)
Dashboard → "Acceso para agentes (MCP)" → Crear token
En el chat:
kairo_login({ access_token: "ztk_..." })— no lo pongas enmcp.json
Config mínima (sin token manual)
{
"mcpServers": {
"zyta": {
"command": "npx",
"args": ["-y", "zyta-sign-mcp"],
"env": {
"KAIRO_BASE_URL": "https://sign.zyta.app",
"KAIRO_CLIENT_LABEL": "Cursor laptop"
}
}
}
}Instalación
npm install -g zyta-sign-mcp
# o on-demand: npx -y zyta-sign-mcpClaude Desktop
Editá claude_desktop_config.json (Settings → Developer):
{
"mcpServers": {
"kairo": {
"command": "npx",
"args": ["-y", "zyta-sign-mcp"],
"env": {
"KAIRO_BASE_URL": "https://sign.zyta.app"
}
}
}
}Codex CLI
En ~/.codex/config.toml:
[mcp_servers.kairo]
command = "npx"
args = ["-y", "zyta-sign-mcp"]
env = { KAIRO_BASE_URL = "https://app.zyta.legal" }Avanzado / legacy: HTTP OAuth en Cursor
Cursor también puede conectarse por URL con OAuth 2.1 (cursor:// redirect).
Este flujo es más frágil en Windows (alert del browser, PKCE en Cursor).
Preferí stdio + kairo_login arriba.
Si igual querés probarlo:
cd kairo-sign
npm run dev # :3000
npm run mcp:http # :3001{
"mcpServers": {
"kairo": {
"url": "http://localhost:3001/mcp",
"transport": "http"
}
}
}Smoke test: npx tsx scripts/smoke-cursor-oauth.ts
Flujo típico: subir, firmar y descargar
kairo_loginsi no hay sesiónkairo_upload_document({ base64, filename, alias? })→document.idkairo_get_sign_url({ documentId, mode: "external" })→url+waitParamsAbrís la URL en el browser y firmás con el mouse
kairo_wait_for_signature(waitParams)→ cuandosigned: true, obtenéssignature.idkairo_download_signed_pdf({ signatureId })→ PDF firmado en base64kairo_verify_signature({ documentHash })→ verificación por hash
Para firma con tu cuenta (PIN + certificado completo), usá mode: "account" en el paso 3.
Variables de entorno
Variable | Default | Descripción |
|
| URL base de la instancia de Kairo. |
| — | Solo para scripts/CI o |
|
| Nombre mostrado en la pantalla |
| — | Secreto compartido con el dashboard (bridge local). |
|
| Puerto del puente localhost. |
| (activo) |
|
| (Windows) ruta a | Navegador usado por |
|
| Carpeta donde se guarda el token tras Device Flow. |
Tools expuestas (49)
Autenticación
Tool | Qué hace |
| Inicia sesión (device flow o token manual). |
| Usuario detrás del token. |
| Borra token cacheado. |
Documentos
Tool | Qué hace |
| Lista documentos visibles. |
| Detalle + firmas. |
| PDF original en base64. |
| Sube PDF (base64). Requiere scope |
| Sube hasta 10 PDFs en una llamada. |
| Cambia alias. Requiere scope |
| Elimina documento propio. Requiere scope |
Firma
Tool | Qué hace |
| URL para firmar + |
| Polling hasta firmado. |
| Subir PDF + link externo en un paso. |
| (legacy) Preferí |
| Paquete multi-documento (2–25 PDFs). |
| Estado del paquete. |
| Polling hasta paquete completo. |
| Pedidos externos de un documento. |
| Revoca link externo. Requiere scope |
| PDF estampado en base64. |
| Certificado JSON con |
| Verifica por hash del documento. |
| Verifica subiendo el PDF + signatureId. |
| Informe diff PDF (Premium). |
| OpenTimestamps: status / upgrade / .ots |
| Abre URL de firma en navegador. |
Presets de firma
Tool | Qué hace |
| Biblioteca de firmas guardadas. |
| Crea preset (PNG base64 obligatorio). Scope |
| Edita preset. Scope |
| Elimina preset. Scope |
Estudios
Tool | Qué hace |
| Estudios donde sos miembro. |
| Crea estudio (Premium). Scope |
| Detalle con áreas y miembros. |
| Renombra estudio. Scope |
| Elimina estudio. Scope |
| Crea área. Scope |
| Renombra área. Scope |
| Elimina área. Scope |
| Agrega miembro por email. Scope |
| Cambia rol/área. Scope |
| Quita miembro. Scope |
Cuenta, webhooks y settings
Tool | Qué hace |
| Plan, cuota mensual y features. |
| TTL del link externo. |
| Cambia TTL ( |
| Lista webhooks HTTPS. |
| Registra webhook. Scope |
| Elimina webhook. Scope |
Próximamente (stub)
Tool | Estado |
| No implementado en backend |
| Firma A→B no implementada |
Las mutaciones con scope write fallan con 403 si el token es solo lectura.
Modelo de seguridad
El token está hasheado con HMAC-SHA256 (
SIGNING_SECRET) en la base; solo guardamos el prefijo + últimos 4 chars para identificación.Cualquier endpoint que el MCP consume usa el mismo
getCurrentUserOrTokenque el dashboard → no hay "modo admin" oculto.Podés revocar un token en cualquier momento desde el dashboard. La revocación es instantánea (no hay TTL de caché).
Los tokens pueden tener vencimiento opcional (1–365 días).
Desarrollo
npm install
KAIRO_BASE_URL=http://localhost:3000 npm run dev
# o lo inspeccionás con MCP Inspector (login explícito vía kairo_login):
KAIRO_API_TOKEN=ztk_... npm run inspectMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blanck1945/zyta-sign-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server