Saltar al contenido principal

Desarrolladores

Servidor MCP de transcripción para tu cuenta

Conecta el servidor MCP de transcripción a tu cuenta de Hushscript para trabajar con grabaciones y transcripciones mediante herramientas de asistente con scopes.

El servidor MCP de Hushscript conecta un asistente con tus grabaciones y transcripciones mediante el Model Context Protocol. Aprueba una conexión OAuth en tu navegador, o proporciona un token de acceso personal. La transcripción y las acciones de pago siguen las reglas de financiamiento de tu cuenta personal o del espacio de trabajo elegible.

Dos servidores

Hushscript tiene en realidad dos servidores MCP independientes, y la mayoría de los lectores solo necesitan uno.

https://mcp.hushscript.com/mcp es el servidor de cuenta que describe el resto de esta página. Acepta OAuth o un token de acceso personal, y es donde ocurre el trabajo de la cuenta: subir, transcribir, editar, exportar.

POST https://hushscript.com/mcp es un servidor de documentación gratuito aparte. Sin cuenta, sin token, sin nada a lo que iniciar sesión. Es de solo lectura y anónimo: no puede abrir una cuenta, ejecutar una transcripción, ni tocar nada que pertenezca a una. Responde preguntas sobre precios, capacidades, contenido de las páginas y cómo conectarse, mediante cinco herramientas (get_pricing, get_capabilities, how_to_connect, list_pages, get_page) y la misma información como tres recursos (hushscript://pricing, hushscript://capabilities, hushscript://connect).

Si eres un agente que acaba de encontrar Hushscript, no tienes ningún token, y todavía estás decidiendo si te conviene antes de gastar algo, empieza por el servidor de documentación. Vuelve al resto de esta página cuando estés listo para conectar una cuenta.

Conéctate

El servidor habla Streamable HTTP en un solo endpoint:

https://mcp.hushscript.com/mcp

No hay ningún endpoint SSE ni software de Hushscript que instalar localmente. En Claude Code:

claude mcp add --transport http hushscript https://mcp.hushscript.com/mcp

En un cliente que acepta configuración JSON:

{
  "mcpServers": {
    "hushscript": {
      "type": "http",
      "url": "https://mcp.hushscript.com/mcp"
    }
  }
}

Un cliente compatible con OAuth lee /.well-known/oauth-authorization-server para conocer los endpoints. Puede registrarse mediante /oauth/register o usar un documento de metadatos de ID de cliente, y luego abre una ventana del navegador para que inicies sesión.

Lo que apruebas

La autorización es OAuth 2.1 con PKCE. La ventana del navegador es una pantalla de consentimiento de Hushscript, no un cuadro de contraseña para el cliente: nombra la aplicación que solicita acceso, enumera en lenguaje sencillo lo que quiere hacer, y espera tu decisión. No se concede nada hasta que lo apruebas ahí.

Los tokens de acceso duran una hora y los tokens de renovación, treinta días. Con OAuth, tu cliente maneja esas credenciales por ti; nunca pegas un token de acceso personal en la configuración.

Sin navegador

Una conexión OAuth requiere aprobación en el navegador. El mismo servidor también acepta un token de acceso personal directamente, sin ningún paso de navegador al conectar. Una persona crea uno en Tokens, en la página de MCP de la cuenta, elige sus scopes, y decide si puede comprar minutos. El token se muestra una sola vez, tiene la forma hsr1:<region>:pat.<id>.<secret>, y va en Authorization: Bearer <token> en cada solicitud: sin intercambio OAuth, sin pantalla de consentimiento, sin registro de cliente. El mismo token funciona con la API REST.

Un token también puede pertenecer a una cuenta de máquina sin ninguna persona titular. Un agente inicia un registro pagado con POST /v1/agent/accounts, completa el Checkout alojado de Stripe en un navegador que puede manejar, y reclama la cuenta con un secreto de un solo uso en POST /v1/agent/accounts/{signup_id}/claim para obtener su primer token. Ese token se conecta aquí exactamente igual que cualquier otro. Consulta Uso automatizado para ver el flujo completo de principio a fin.

Un token no puede crear, listar ni revocar otros tokens. Una cuenta tiene como máximo 25 tokens activos. El primer token de la cuenta de máquina puede rotarse a sí mismo mediante la API REST; el flujo está en Uso automatizado.

Permisos

Una conexión mantiene un conjunto de scopes. Una solicitud OAuth que no nombra ninguno usa por defecto diez de los once scopes que puede elegir quien llama, todos excepto billing. Una persona elige los scopes de un token creado en la aplicación. El primer token de una cuenta de máquina solo tiene transcripts:read, transcripts:write, transcribe, account:read, export, billing y el scope aparte pat:rotate para la autorrotación. Su reclamo activa ambos interruptores de facturación; un token creado por una persona necesita que se activen a propósito. Cuando se conocen los scopes, el servidor anuncia las herramientas correspondientes; el backend los aplica en cada llamada.

Scope Qué permite
transcripts:read Lee y exporta las transcripciones, sus metadatos y la lista de eliminadas
transcripts:write Edita, etiqueta, traduce, restaura y elimina transcripciones
transcribe Sube grabaciones, importa desde un enlace e inicia transcripciones
insights Lee, genera y elimina Insights
context Administra diccionarios guardados y preajustes de indicaciones
account:read Lee el saldo, el uso, las transacciones y las retenciones
settings:write Cambia la configuración de la cuenta
org:read Lee los miembros, el historial de movimientos, las facturas y el registro de auditoría del espacio de trabajo
org:write Cambia los permisos de los miembros, impone y levanta retenciones legales, y programa el paso a la custodia corporativa (permanente)
export Solicita una exportación completa de la cuenta, consulta su estado y la descarga
billing Guarda o administra métodos de pago y compra paquetes de minutos

billing es la excepción en todos los sentidos. Nunca se concede de forma implícita, la pantalla de consentimiento te advierte antes de que la apruebes, y una herramienta de compra necesita que estén activados tanto el indicador de facturación del token como el interruptor de facturación de toda la cuenta. pat:rotate no se puede seleccionar en una solicitud OAuth ni en el formulario de tokens de la aplicación.

Lo que cubren las herramientas

56 herramientas, agrupadas según lo que tocan:

Grupo Herramientas Ejemplos
Transcripciones, lectura 4 list_transcripts, get_transcript, list_deleted
Transcripciones, escritura 10 update_body, revert_body, retranslate, tag_transcripts
Transcribir 8 create_upload, transcribe_from_url, list_jobs, cancel_job
Cuenta 6 get_balance, get_usage, list_transactions
Insights 3 get_insights, generate_insights, delete_insights
Exportación 4 export_transcript, request_account_export
Contexto de transcripción 5 save_dictionary, save_prompt_preset
Espacio de trabajo 10 get_org, list_org_members, get_org_audit_log, place_transcript_hold
Facturación 6 list_packs, purchase_pack, list_payment_methods, add_payment_method

export_transcript devuelve TXT, SRT, VTT, Markdown o JSON. El conjunto completo de 21 formatos de exportación está en la aplicación.

Además de las herramientas, el servidor publica tres recursos y una cadena instructions al conectar: los paquetes de minutos, el modelo de créditos y scopes, y el catálogo completo de códigos de error, para que un cliente pueda leer las reglas antes de llamar a nada. Las herramientas de listado paginadas toman un limit y un cursor opaco del next_cursor de la página anterior; list_packs y list_payment_methods devuelven sus listas sin cursor.

Las subidas por MCP envían audio ya preparado. Para un video local, prepara primero su audio en tu dispositivo; transcribe_from_url obtiene enlaces de audio compatibles desde el servidor y no importa enlaces de video. Los jobs iniciados por MCP usan el modo estándar: sus transcripciones se guardan según la configuración de retención de la cuenta. El modo privado de un solo uso está disponible en la aplicación, no mediante tokens MCP.

Ejemplos

Un cliente que hace el flujo OAuth obtiene una sesión MCP normal y nunca ve nada de esto directamente: su SDK arma el JSON-RPC por debajo. Este es el mismo protocolo que un cliente con token envía a mano, y sirve como ayuda para depurar en cualquiera de los dos casos.

Conéctate con un token poniéndolo directamente en la solicitud, sin más protocolo de enlace que initialize:

curl -s https://mcp.hushscript.com/mcp \
  -H "Authorization: Bearer hsr1:us:pat.4f2a1c.9e7b3d2a5c8f1e6b4a0d7c3f2e1b9a8d" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "capabilities": {},
      "clientInfo": { "name": "example-client", "version": "1.0.0" }
    }
  }'

Envía la misma solicitud otra vez con un cuerpo distinto para ver todas las herramientas que cubren los scopes del token:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list"
}

Cada entrada trae un nombre, una descripción y un inputSchema en JSON Schema, que corresponde a los grupos de arriba. Llamar a una herramienta se ve así, create_upload reservando crédito e iniciando una subida:

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "create_upload",
    "arguments": {
      "size_bytes": 52428800,
      "duration_seconds": 1800,
      "title": "Team standup 2026-09-10",
      "transcription_options": { "speaker_detection": true }
    }
  }
}

Las herramientas estructuradas como create_upload devuelven un bloque content de texto con JSON convertido a cadena. Por ejemplo:

{
  "content": [
    {
      "type": "text",
      "text": "{\n  \"job_id\": \"job_8f3a1c2b9e\",\n  \"balance_seconds\": 5400,\n  \"held_seconds\": 1800,\n  \"upload\": {\n    \"part_size_bytes\": 33554432,\n    \"total_parts\": 2,\n    \"part_urls\": [\n      { \"n\": 1, \"url\": \"https://...\" }\n    ],\n    \"next_part_number\": 2\n  }\n}"
    }
  ]
}

La respuesta de arriba muestra los campos de la subida; la respuesta completa incluye además limits, funding y state. Sube los bytes a esas URLs, llama a complete_upload con el ETag de cada parte, y luego consulta get_job hasta que su estado sea done. Los ejemplos estructurados de abajo muestran ese JSON interno directamente, ya interpretado, y omiten el envoltorio {"jsonrpc":"2.0","id":...} alrededor de la solicitud porque nunca cambia: solo cambian name y arguments.

export_transcript devuelve el formato generado como texto, y download_account_export_chunk devuelve bytes sin procesar codificados como texto base64. Interpreta el text de un resultado como JSON solo cuando la herramienta devuelve datos estructurados.

Listar y leer transcripciones:

{
  "name": "list_transcripts",
  "arguments": { "limit": 5 }
}
{
  "transcripts": [
    {
      "id": "t_9c2b7f10",
      "title": "Team standup 2026-09-10",
      "language_detected": "en",
      "duration_seconds": 1800,
      "tags": ["standup"],
      "insights_state": "none"
    }
  ],
  "next_cursor": null
}

Generar Insights, gratis en la primera llamada para una transcripción. Este ejemplo muestra el saldo cuando empieza una generación nueva; reused es false:

{
  "name": "generate_insights",
  "arguments": { "id": "t_9c2b7f10" }
}
{
  "ok": true,
  "reused": false,
  "balance_seconds": 5400,
  "held_seconds": 0
}

Comprar minutos, con idempotency_key obligatorio para que un reintento tras una respuesta perdida no pueda cobrar dos veces:

{
  "name": "purchase_pack",
  "arguments": {
    "pack": "300min",
    "payment_method_id": "pm_1PxYzABC",
    "idempotency_key": "agent-2026-09-11-refill-01"
  }
}
{
  "status": "ok",
  "balance_seconds": 23400
}

Los recursos responden sin llamar a una herramienta, resources/read nombrando una de las tres URIs:

{
  "jsonrpc": "2.0",
  "id": 9,
  "method": "resources/read",
  "params": { "uri": "hushscript://pricing" }
}

Respuesta abreviada (se omite la nota explicativa del recurso):

{
  "contents": [
    {
      "uri": "hushscript://pricing",
      "mimeType": "application/json",
      "text": "{\"packs\":[{\"id\":\"45min\",\"minutes\":45},{\"id\":\"300min\",\"minutes\":300},{\"id\":\"900min\",\"minutes\":900},{\"id\":\"1800min\",\"minutes\":1800},{\"id\":\"6000min\",\"minutes\":6000}]}"
    }
  ]
}

Usa list_packs para ver los montos y monedas vigentes de los paquetes.

Todo fallo del backend lleva un slug estable y un código numérico, el mismo cuerpo {"error": "<slug>", "code": <number>} documentado en hushscript://error-codes. Una llamada a una herramienta muestra ese mismo slug y código, convertido en un mensaje legible en lugar de un objeto de error crudo, y marca el resultado con isError en vez de lanzar una excepción:

{
  "content": [
    {
      "type": "text",
      "text": "Not enough transcription credit. This job needs 1800 seconds and the balance is 900 seconds. Top up at https://app.hushscript.com/billing (insufficient_balance, E3001)"
    }
  ],
  "isError": true
}

Qué consume minutos

Leer datos de la cuenta no gasta minutos de transcripción. Las acciones con costo usan las mismas tarifas que la aplicación. Por lo general las cubren los minutos prepagados personales; una transcripción de un espacio de trabajo puede usar un fondo de Teams cuando el fondo activo por sí solo cubre todo el job y no hay ningún idioma de traducción seleccionado. Un job con idiomas de traducción o con una URL de audio importada usa minutos personales. El financiamiento no cambia la custodia de la transcripción.

Las cuentas personales elegibles reciben 30 minutos gratis tras la verificación de la tarjeta; una cuenta de máquina empieza con el paquete que compra al registrarse.

Consulta precios para ver los paquetes en sí.

Revisar y revocar

En una cuenta a la que puedes iniciar sesión, las conexiones OAuth aparecen bajo Aplicaciones conectadas en la página de MCP de tu cuenta, con su cliente y sus scopes. Los tokens también se listan ahí; revocar uno corta sus llamadas. Eliminar la configuración de un cliente solo evita que ese cliente vuelva a solicitar acceso. Una cuenta de máquina no tiene un buzón de inicio de sesión utilizable, así que su token se rota a sí mismo mediante el flujo de cuenta de agente.

Límites

Los tokens de cuentas humanas permiten 1,200 solicitudes por minuto cada uno. Los tokens rotados de una cuenta de agente comparten ese presupuesto entre rotaciones. Las rutas de facturación que llaman a Stripe y se alcanzan con un token comparten 60 solicitudes por minuto por cuenta: configuración de tarjeta, compra, cambios de tarjeta predeterminada, eliminación de tarjeta y fallos de caché de la lista de tarjetas. Las compras de cuentas de agente y las compras con token de cuentas humanas tienen un tope de tres intentos por cada 24 horas móviles por cuenta. La compra de registro del agente cuenta, igual que los fallos posteriores a la reserva de un intento; las compras desde una sesión de navegador humana están exentas. Un rechazo por el tope es HTTP 429 / código 4038 agent_purchase_capped, distinto del HTTP 429 / código 5000 rate_limited ordinario. Ambos incluyen Retry-After.

La autorización y la finalización de OAuth comparten un cupo de 30 por minuto por dirección. El registro tiene su propio cupo de 30 por minuto; /oauth/token tiene un cupo aparte de 600 por minuto. Cada uno usa como clave una dirección IPv4 o un /64 de IPv6. Los fallos de caché en la introspección de tokens sin procesar tienen otro cupo de 30 por minuto con la misma clave; eso no es un límite para cada llamada a una herramienta MCP.

Empieza a transcribir con 30 minutos para probar

Obtén una vista previa de hasta 5 minutos antes de crear una cuenta, y una cuenta personal nueva recibe una vista previa gratis de su primera subida en la aplicación. La transcripción completa requiere una cuenta y minutos; las cuentas personales elegibles reciben 30 minutos gratis una sola vez, tras verificar la tarjeta o con su primera compra. Sin suscripción.

Comenzar con 30 minutos gratis