Ir para o conteúdo principal

Desenvolvedores

Servidor MCP de transcrição para sua conta

Conecte o servidor MCP de transcrição à sua conta Hushscript para trabalhar com gravações e transcrições por meio de ferramentas de assistente com escopo.

O servidor MCP do Hushscript conecta um assistente às suas gravações e transcrições usando o Model Context Protocol. Aprove uma conexão OAuth no navegador ou informe um token de acesso pessoal. A transcrição e as ações pagas seguem as regras de financiamento da sua conta pessoal ou do espaço de trabalho elegível.

Dois servidores

O Hushscript, na verdade, executa dois servidores MCP separados, e a maioria dos leitores só precisa de um deles.

https://mcp.hushscript.com/mcp é o servidor de conta descrito no restante desta página. Ele aceita OAuth ou um token de acesso pessoal, e é onde o trabalho da conta acontece: enviar, transcrever, editar, exportar.

POST https://hushscript.com/mcp é um servidor de documentação gratuito e separado. Sem conta, sem token, sem login. Ele é somente leitura e anônimo: não pode abrir uma conta, executar uma transcrição, nem tocar em nada que pertença a uma conta. Ele responde perguntas sobre preços, capacidades, conteúdo das páginas e como se conectar, por meio de cinco ferramentas (get_pricing, get_capabilities, how_to_connect, list_pages, get_page) e as mesmas informações como três recursos (hushscript://pricing, hushscript://capabilities, hushscript://connect).

Se você é um agente que acabou de encontrar o Hushscript, não tem nenhum token, e ainda está decidindo se ele atende às suas necessidades antes de gastar algo, comece pelo servidor de documentação. Volte ao restante desta página quando estiver pronto para conectar uma conta.

Conectar

O servidor fala Streamable HTTP em um único endpoint:

https://mcp.hushscript.com/mcp

Não há endpoint SSE, e não há nenhum software do Hushscript para instalar localmente. No Claude Code:

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

Em um cliente que aceita configuração em JSON:

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

Um cliente compatível com OAuth lê /.well-known/oauth-authorization-server para descobrir os endpoints. Ele pode se registrar por /oauth/register ou usar um documento de metadados de ID de cliente, e então abre uma janela do navegador para você fazer login.

O que você aprova

A autorização é OAuth 2.1 com PKCE. A janela do navegador é uma tela de consentimento do Hushscript, não uma caixa de senha do cliente: ela nomeia o aplicativo que está pedindo, lista em linguagem simples o que ele quer fazer, e espera por você. Nada é concedido até você aprovar ali.

Os tokens de acesso duram uma hora, e os tokens de renovação duram trinta dias. Com OAuth, seu cliente cuida dessas credenciais por você; você nunca cola um token de acesso pessoal na configuração.

Sem navegador

Uma conexão OAuth exige aprovação no navegador. O mesmo servidor também aceita um token de acesso pessoal diretamente, sem nenhuma etapa de navegador na hora de conectar. Uma pessoa cria um em Tokens, na página MCP da conta, escolhe os escopos dele e decide se ele pode comprar minutos. O token é exibido uma única vez, tem o formato hsr1:<region>:pat.<id>.<secret>, e vai em Authorization: Bearer <token> em cada requisição: sem ida e volta OAuth, sem tela de consentimento, sem registro de cliente. O mesmo token funciona na API REST.

Um token também pode pertencer a uma conta de máquina, sem nenhuma pessoa como titular. Um agente inicia um cadastro pago com POST /v1/agent/accounts, completa um Stripe Checkout hospedado em um navegador que ele pode conduzir, e reivindica a conta com um segredo de uso único em POST /v1/agent/accounts/{signup_id}/claim para obter seu primeiro token. Esse token se conecta aqui exatamente como qualquer outro. Veja Uso automatizado para o fluxo completo, do início ao fim.

Um token não pode criar, listar nem revogar outros tokens. Uma conta mantém no máximo 25 tokens ativos. O primeiro token da conta de máquina pode rotacionar a si mesmo pela API REST; o fluxo está em Uso automatizado.

Permissões

Uma conexão mantém um conjunto de escopos. Um pedido OAuth que não nomeia nenhum usa por padrão dez dos onze escopos selecionáveis por quem chama, todos exceto billing. Uma pessoa escolhe os escopos em um token criado no aplicativo. O primeiro token de uma conta de máquina tem apenas transcripts:read, transcripts:write, transcribe, account:read, export, billing e o escopo separado pat:rotate para a autorrotação. A reivindicação dela habilita as duas chaves de faturamento; um token criado por uma pessoa precisa que elas sejam habilitadas de propósito. Quando os escopos são conhecidos, o servidor anuncia as ferramentas correspondentes; o backend os aplica em cada chamada.

Escopo O que ele permite
transcripts:read Ler e exportar transcrições, seus metadados e a lista de excluídas
transcripts:write Editar, marcar, traduzir, restaurar e excluir transcrições
transcribe Enviar gravações, importar de um link e executar transcrições
insights Ler, gerar e excluir Insights
context Gerenciar dicionários salvos e predefinições de prompt
account:read Ler saldo, uso, transações e reservas
settings:write Alterar as configurações da conta
org:read Ler membros do espaço de trabalho, extrato, faturas e log de auditoria
org:write Alterar os direitos dos membros, aplicar e remover bloqueios legais, e agendar a transição para a custódia institucional (permanente)
export Solicitar uma exportação completa da conta, verificar o status dela e baixá-la
billing Salvar ou gerenciar métodos de pagamento e comprar pacotes de minutos

billing é a exceção em todos os sentidos. Nunca é concedido implicitamente, a tela de consentimento avisa você antes de aprovar, e uma ferramenta de compra precisa que a chave de faturamento do token e a chave de faturamento de toda a conta estejam habilitadas. pat:rotate não pode ser selecionado em um pedido OAuth nem no formulário de token do aplicativo.

O que as ferramentas cobrem

56 ferramentas, agrupadas pelo que elas tocam:

Grupo Ferramentas Exemplos
Transcrições, leitura 4 list_transcripts, get_transcript, list_deleted
Transcrições, escrita 10 update_body, revert_body, retranslate, tag_transcripts
Transcrever 8 create_upload, transcribe_from_url, list_jobs, cancel_job
Conta 6 get_balance, get_usage, list_transactions
Insights 3 get_insights, generate_insights, delete_insights
Exportação 4 export_transcript, request_account_export
Contexto de transcrição 5 save_dictionary, save_prompt_preset
Espaço de trabalho 10 get_org, list_org_members, get_org_audit_log, place_transcript_hold
Faturamento 6 list_packs, purchase_pack, list_payment_methods, add_payment_method

export_transcript retorna TXT, SRT, VTT, Markdown ou JSON. O conjunto completo de 21 formatos de exportação está no aplicativo.

Além das ferramentas, o servidor publica três recursos e uma string de instructions na conexão: os pacotes de minutos, o modelo de crédito e escopo, e o catálogo completo de códigos de erro, para que um cliente possa ler as regras antes de chamar qualquer coisa. As ferramentas de listagem paginadas recebem um limit e um cursor opaco, tirado do next_cursor da página anterior; list_packs e list_payment_methods retornam suas listas sem cursor.

Os envios pelo MCP mandam áudio já preparado. Para um vídeo local, prepare o áudio dele no seu dispositivo antes; transcribe_from_url busca links de áudio compatíveis no servidor e não importa links de vídeo. Os jobs iniciados pelo MCP usam o modo padrão: as transcrições ficam armazenadas conforme a configuração de retenção da conta. O modo privado de uso único está disponível no aplicativo, não por tokens do MCP.

Exemplos

Um cliente que faz o fluxo OAuth recebe uma sessão MCP normal e nunca vê nada disso diretamente: seu SDK monta o JSON-RPC por baixo dos panos. Esse é o mesmo protocolo que um cliente com token envia manualmente, e funciona como ferramenta de depuração dos dois jeitos.

Conecte-se com um token colocando-o direto na requisição, sem handshake além do 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" }
    }
  }'

Envie a mesma requisição de novo com um corpo diferente para ver todas as ferramentas que os escopos do token cobrem:

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

Cada item traz um nome, uma descrição e um inputSchema em JSON Schema, correspondendo aos grupos acima. Uma chamada de ferramenta é assim, create_upload reservando crédito e iniciando um envio:

{
  "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 }
    }
  }
}

Ferramentas estruturadas como create_upload retornam um bloco content de texto com JSON transformado em string. Por exemplo:

{
  "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}"
    }
  ]
}

A resposta acima mostra os campos do envio; a resposta completa também inclui limits, funding e state. Envie os bytes para essas URLs, chame complete_upload com o ETag de cada parte, depois consulte get_job até seu estado ser done. Os exemplos estruturados abaixo mostram esse JSON interno diretamente, já interpretado, e omitem o envelope {"jsonrpc":"2.0","id":...} em volta da requisição, já que ele nunca muda: só name e arguments mudam.

export_transcript retorna o formato gerado como texto, e download_account_export_chunk retorna bytes brutos codificados como texto em base64. Interprete o text de um resultado como JSON somente quando a ferramenta retornar dados estruturados.

Listando e lendo transcrições:

{
  "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
}

Gerando Insights, grátis na primeira chamada para uma transcrição. Este exemplo mostra o saldo depois que uma nova geração começa; reused é false:

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

Comprando minutos, idempotency_key é obrigatório para que uma nova tentativa após uma resposta perdida não gere cobrança duplicada:

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

Recursos respondem sem uma chamada de ferramenta, com resources/read nomeando uma das três URIs:

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

Resposta abreviada (a nota explicativa do recurso foi omitida):

{
  "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}]}"
    }
  ]
}

Use list_packs para os valores e as moedas atuais dos pacotes.

Toda falha do backend traz um slug estável e um código numérico, o mesmo corpo {"error": "<slug>", "code": <number>} documentado em hushscript://error-codes. Uma chamada de ferramenta expõe esse mesmo slug e código, incorporados em uma mensagem legível em vez de um objeto de erro bruto, e sinaliza o resultado com isError em vez de lançar uma exceção:

{
  "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
}

O que custa minutos

Ler dados da conta não gasta minutos de transcrição. As ações cobradas usam as mesmas tarifas do aplicativo. Em geral, os minutos pré-pagos pessoais as financiam; a transcrição em um espaço de trabalho pode usar o banco de horas compartilhado do Teams quando só o banco ativo cobre o job inteiro e nenhum idioma de tradução está selecionado. Um job com idiomas de tradução ou com uma URL de áudio importada usa minutos pessoais. O financiamento não muda a custódia das transcrições.

Contas pessoais elegíveis recebem 30 minutos grátis após a verificação do cartão; uma conta de máquina começa com o pacote que compra no cadastro.

Veja a página de preços para os pacotes em si.

Revisando e revogando

Para uma conta em que você consegue fazer login, as conexões OAuth aparecem em Aplicativos conectados, na página MCP de sua conta, com o cliente e os escopos delas. Os tokens também são listados ali; revogar um corta as chamadas dele. Remover a configuração de um cliente só impede que esse cliente peça de novo. Uma conta de máquina não tem caixa de e-mail de login utilizável, então o token dela é rotacionado pelo fluxo de conta de agente.

Limites

Os tokens de contas humanas permitem 1.200 requisições por minuto cada um. A cadeia de tokens de uma conta de agente compartilha esse orçamento entre as rotações. As rotas de faturamento que chamam o Stripe, acessadas por um token, compartilham 60 requisições por minuto por conta: configuração de cartão, compra, troca do cartão padrão, remoção de cartão e falhas de cache da lista de cartões. As compras de contas de agente e as compras por token de contas humanas têm teto de três tentativas a cada 24 horas móveis por conta. O cadastro pago do agente conta, assim como as falhas depois que uma tentativa é reservada; as compras em sessão de navegador humana são isentas. Uma recusa pelo teto é HTTP 429 / código 4038 agent_purchase_capped, distinta do HTTP 429 / código 5000 rate_limited comum. Ambas trazem Retry-After.

A autorização e a conclusão do OAuth compartilham uma cota de 30 por minuto por endereço. O registro tem a própria cota de 30 por minuto; /oauth/token tem uma cota separada de 600 por minuto. Cada uma usa como chave um endereço IPv4 ou um /64 de IPv6. As falhas de cache na introspecção de token bruto têm outra cota de 30 por minuto sobre a mesma chave; isso não é um limite para cada chamada de ferramenta do MCP.

Comece a transcrever com 30 minutos para testar

Veja uma prévia de até 5 minutos antes de criar uma conta, e uma nova conta pessoal recebe uma prévia grátis do primeiro envio no aplicativo. A transcrição completa exige uma conta e minutos; contas pessoais elegíveis recebem 30 minutos grátis uma única vez, após a verificação do cartão ou com a primeira compra. Sem assinatura.

Começar com 30 minutos grátis