Dreamwork

Busca de empregos para assistentes de IA: navegue por vagas, personalize currículos e cartas de apresentação, candidate-se e acompanhe as inscrições. A navegação pública não exige conta; as ferramentas com conta seguem seu plano Dreamwork.

Servidor MCP hospedado

npx add-mcp 'https://mcp.dreamworkhq.com/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

O código-fonte público do MCP do Dreamwork está aqui. O cliente chama a API hospedada do Dreamwork; ele não inclui a API, o banco de dados, os workers ou o serviço OAuth hospedado.

Conecte via HTTP em https://mcp.dreamworkhq.com/mcp, ou execute o cliente stdio com npx -y @dreamworkhq/mcp. A navegação pública de vagas funciona sem chave.

Para desenvolvimento do código-fonte, use Node 22 e pnpm 10.23.0:

pnpm install --frozen-lockfile
pnpm check
pnpm test
pnpm build
pnpm test:package

O cliente MCP está em apps/mcp. packages/api-contracts e packages/assistant-contracts contêm suas dependências de código-fonte; elas são empacotadas no CLI publicado. source-export.json registra o commit do código-fonte do release. Veja CONTRIBUTING.md para saber como as alterações chegam a um release.


@dreamworkhq/mcp

Servidor MCP para Dreamwork: ferramentas de busca de empregos para agentes de IA. Qualquer cliente MCP (Claude Desktop, Cursor, o MCP Inspector) pode usá-lo para encontrar vagas, classificá-las, personalizar candidaturas, se candidatar e acompanhar resultados para uma pessoa ao longo do tempo.

Este servidor é um gateway leve: ele chama a API do Dreamwork via HTTPS e não possui acesso próprio a banco de dados. O transporte é stdio, e o stdout carrega apenas quadros JSON-RPC.

Instalação

Não há etapa de instalação. Clientes MCP o executam sob demanda com npx. Os exemplos abaixo usam npx -y @dreamworkhq/mcp.

Nenhuma chave ou conta é necessária para começar. Sem DREAMWORK_API_KEY o servidor executa em modo convidado gratuito, onde seu agente pode pesquisar e ler todos os anúncios. Os blocos env abaixo são opcionais; adicione uma chave quando quiser as ferramentas de conta (veja Modo convidado e chaves de API).

Configuração

Claude Desktop

Adicione uma entrada ao seu claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json no macOS):

{
  "mcpServers": {
    "dreamwork": {
      "command": "npx",
      "args": ["-y", "@dreamworkhq/mcp"],
      "env": {
        "DREAMWORK_API_KEY": "sk_..."
      }
    }
  }
}

Reinicie o Claude Desktop após editar. Coloque as credenciais no bloco env. Não envolva command em um shell ou em um carregador de ambiente como dotenvx run -- …: em um servidor stdio, qualquer banner que o wrapper imprima no stdout corrompe o fluxo JSON-RPC e trava as chamadas de ferramentas.

Cursor e outros clientes

Qualquer cliente MCP stdio funciona. O Cursor usa a mesma configuração mostrada acima: aponte o comando para npx -y @dreamworkhq/mcp e passe DREAMWORK_API_KEY no ambiente. Para verificar a configuração com o Inspector:

DREAMWORK_API_KEY=sk_... npx @modelcontextprotocol/inspector npx -y @dreamworkhq/mcp

Endpoint hospedado

O Dreamwork também serve essas ferramentas via Streamable HTTP em https://mcp.dreamworkhq.com/mcp. No claude.ai, Claude Desktop ou ChatGPT, adicione essa URL como um conector personalizado e faça login no Dreamwork. Não há nada para instalar e nenhuma chave para colar. A tela de consentimento pergunta quais escopos o conector recebe.

Clientes que definem cabeçalhos de requisição podem enviar uma chave de API para a mesma URL em vez disso. No Claude Code:

claude mcp add --transport http dreamwork https://mcp.dreamworkhq.com/mcp \
  --header "Authorization: Bearer sk_..."

Modo convidado e chaves de API

O modo convidado é gratuito e não precisa de conta. Sem chave definida, o servidor inicia em modo convidado e expõe as ferramentas públicas somente leitura: browse_listings, get_listing, get_platform_context e get_upgrade_link. O servidor informa ao agente que está em modo convidado, para que o agente possa dizer o que funciona agora. As ferramentas de conta respondem com uma mensagem curta "Sem chave de API" que lista os passos para obter uma.

Uma chave de API precisa de uma conta gratuita. Correspondências classificadas contra seu currículo, vagas salvas, materiais personalizados, o pipeline, e-mails de recrutadores e candidaturas precisam de uma chave de API. Qualquer conta do Dreamwork pode gerar uma, incluindo o plano gratuito. Seu plano define o limite de taxa e as permissões de uso da chave. Entre em dreamworkhq.com, abra Perfil e depois MCP (ou use o botão Obter chave na página Agentes), então defina a chave como DREAMWORK_API_KEY (formato sk_...) e reinicie seu cliente MCP.

Ao gerar uma chave, você escolhe o que ela pode fazer: ler, escrever, candidatar-se, enviar e-mail. A página de perfil começa com todos os quatro selecionados; desmarque qualquer coisa que seu agente não deva fazer. Uma chave pode fazer menos do que você pode, nunca mais.

Variáveis de ambiente

VariávelObrigatóriaPadrãoFinalidade
DREAMWORK_API_KEYPara ferramentas de contanenhumaChave de API (sk_...). Desbloqueia pipeline, currículo, candidatura, divulgação, perfil, entrevistas.
DREAMWORK_API_URLNãohttps://api.dreamworkhq.comSubstitui o endpoint da API (dev local / auto-hospedado).
DREAMWORK_UNREAD_NOTICESNãoativadooff (também 0/false/no) impede que os resultados das ferramentas carreguem uma nota sobre e-mails não lidos de recrutadores. No máximo uma verificação a cada cinco minutos; verificar nunca marca e-mail como lido.

JOBLESS_API_TOKEN e JOBLESS_API_URL ainda são aceitos como aliases retrocompatíveis para DREAMWORK_API_KEY e DREAMWORK_API_URL; prefira os nomes DREAMWORK_ para novas configurações.

Telemetria

Para medir o uso, o servidor gera um id de instalação anônimo e aleatório (um UUID) na primeira execução e o armazena no diretório de estado do seu sistema operacional ($XDG_STATE_HOME/dreamwork/install-id, ~/.local/state/dreamwork/install-id no Linux/macOS, ou %LOCALAPPDATA%\dreamwork\install-id no Windows). É um valor aleatório, nunca derivado do seu hostname, nome de usuário ou qualquer atributo da máquina. Ele conta instalações únicas do uso de convidado (não autenticado). Ele é gravado em tempo de execução na sua máquina, nunca em tempo de build ou publicação.

Para desativar, defina qualquer uma das variáveis de ambiente:

  • DREAMWORK_TELEMETRY=0 (também false/no/off)
  • DO_NOT_TRACK=1 (o padrão de desativação; também true/yes/on)

Com a telemetria desativada, nenhum id de instalação é gerado, lido ou enviado.

Ferramentas

O fluxo típico: navegue pelo índice público, salve vagas no pipeline, personalize materiais, candidate-se e depois acompanhe respostas e entrevistas. Chame get_platform_context primeiro. Ele descreve o que o Dreamwork pode fazer, para que o agente escolha o fluxo de trabalho certo.

Públicas (sem chave):

browse_listings, get_listing, get_platform_context, get_upgrade_link

Ações de assistente: uma ferramenta por capacidade no registro de assistentes do Dreamwork, cada uma passando pela mesma escada de autorização e registro de recibos que o assistente no site usa. Uma ação consequente pausa na primeira chamada, respondendo com um resumo e um confirmationToken; envie esse token de volta com argumentos idênticos para prosseguir.

apply, cancel_apply, confirm_hypothesis, dismiss_match, edit_answer, edit_cover_letter, edit_resume, forget_hypothesis, format_resume, generate_pack, get_application_documents, get_application_readiness, get_application_status, get_autopilot_settings, get_autopilot_status, get_career_record, get_communication_preferences, get_inbox, get_job, get_pack_status, get_pipeline, get_preferences, get_resume_download_link, get_resume_work_history, get_task, get_unread_reminders, get_updates_since, get_usage, import_job, list_dismissed_matches, list_matches, list_tasks, mark_applied_offsite, mark_messages_read, move_pipeline, parse_preferences_text, prepare_applications, remember_hypothesis, replace_application_document, reply_to_recruiter, restore_match, restore_material, save_application_answers, save_job, set_autopilot, start_checkout, strengthen_application, undo_last, update_autopilot_settings, update_communication_preferences, update_preferences

Ferramentas diretas do produto: rotas sem ação de registro por trás delas.

add_contact, add_jobs, generate_outreach, generate_resume, get_application_materials, get_generated_resumes, get_profile, get_stats, list_contacts, list_interviews, reopen_application_materials, update_application_materials, update_profile, upload_resume

O servidor também oferece cinco prompts, que hosts como Claude Desktop e Claude Code mostram como comandos: morning_brief (o que mudou desde a última verificação), find_and_prepare (pesquisar, escolher, preparar materiais), apply_to_prepared (preencher respostas ausentes, revisar, candidatar-se com confirmação), interview_prep e autopilot_setup.

Notas sobre algumas ferramentas:

  • Nenhuma ferramenta envia e-mail ou submete uma candidatura na primeira chamada. apply, reply_to_recruiter, set_autopilot, update_autopilot_settings e start_checkout retornam held com um resumo e um confirmationToken, e agem somente quando você envia esse token de volta com argumentos idênticos.
  • A versão 1.3.0 removeu as ferramentas da 1.2.0 que uma ação de registro substituiu: search_jobs e list_applications (use get_pipeline; browse_listings pesquisa o índice), apply_to_job (apply), add_listing_to_pipeline (save_job), skip_job (dismiss_match) e send_outreach. Respostas e reenvios passam por reply_to_recruiter e apply.
  • Releases após 1.5.1 não incluem mais list_escalations e resolve_escalation, e o servidor hospedado não as oferece mais. O Dreamwork não devolve mais uma candidatura para você como escalonamento, então não há nada para elas listarem ou resolverem.
  • update_application_materials e reopen_application_materials estão abertas para a coorte de rollout de Candidaturas que a API admite; fora dela, elas retornam a própria recusa da API.
  • get_stats agrega o pipeline do próprio candidato conectado, então precisa de uma chave como as demais.

Escopos de chave

Uma chave de API carrega escopos, escolhidos quando você a gera:

EscopoO que ele desbloqueia
readToda ação de leitura: correspondências, pipeline, caixa de entrada, status, uso, recibos
writeGravações baratas e em fila: salvar, dispensar, mover, editar materiais, preferências, links de checkout
applySubmeter uma candidatura, cancelar uma que ainda está enviando e Autopilot
sendEnviar e-mail a um recrutador

Um escopo protege todos os caminhos para a ação, incluindo rotas diretas. write é o mínimo para mudar qualquer coisa: uma chave sem ele é recusada em qualquer requisição que não seja GET, HEAD ou OPTIONS, então uma chave de leitura não pode reescrever um perfil ou mover o quadro chamando a rota diretamente. Uma chave sem apply é recusada em apply, e também em POST /jobs/:id/apply, nas rotas de candidatura turbo e nas rotas de escalonamento. Uma chave sem send é recusada em reply_to_recruiter, em POST /outreach/send e em POST /conversations/:id/reply. Uma chamada direta responde 403 com api_key_scope_required, o escopo que deseja e uma mensagem dizendo o que fazer; uma ação de assistente responde action_not_authorized com o mesmo próximo passo.

Uma chave nunca pode gerenciar chaves, rotacionar o token de sessão ou excluir a conta. Essas ações respondem 403 session_required independentemente do que ela tiver.

A página de perfil pré-seleciona todos os quatro escopos, e uma solicitação de chave que não nomeia escopos recebe leitura e gravação. Uma chave criada antes de os escopos existirem mantém tudo o que já podia fazer.

Solução de problemas

  • Chamadas de ferramentas travam / expiram, mas o handshake funciona. Algo está gravando bytes não JSON-RPC no stdout. Certifique-se de que command não esteja envolvido em um carregador de ambiente ou shell que imprima um banner, e atualize para a versão mais recente (npx -y @dreamworkhq/mcp@latest; limpe o cache do npx com rm -rf ~/.npm/_npx se um build antigo estiver em cache). O stdout deve carregar apenas quadros de protocolo. Todo o log do servidor vai para o stderr.
  • Toda ferramenta de conta diz "Sem chave de API". DREAMWORK_API_KEY não está chegando ao processo. Confirme que está no bloco env da configuração do seu cliente.
  • Toda ferramenta de conta diz "Chave de API rejeitada". A chave chegou ao servidor, mas expirou ou foi revogada. Crie uma nova em Perfil, depois MCP, substitua DREAMWORK_API_KEY por ela e reinicie seu cliente MCP.
  • Candidatura retorna missing_onboarding_fields ou missing_profile_fields. A ferramenta relata os campos ausentes e o caminho no Dreamwork que corrige cada um. Complete esses detalhes no Dreamwork antes de tentar novamente; a requisição com falha não iniciou uma candidatura.

Desenvolvimento

pnpm --filter @dreamworkhq/mcp check   # typecheck
pnpm --filter @dreamworkhq/mcp build   # emit dist/
pnpm --filter @dreamworkhq/mcp test    # unit tests

O entrypoint stdio é src/stdio.ts; as definições de ferramentas estão em src/mcp.ts; o cliente da API HTTP é src/client.ts.

O servidor lê a configuração apenas do ambiente do processo. Ele não carrega um arquivo .env. Para desenvolvimento local, exporte as variáveis no seu shell (ex.: DREAMWORK_API_URL=http://127.0.0.1:3000 pnpm --filter @dreamworkhq/mcp stdio). Decisões de fronteira de pacotes, convenções de registro de ferramentas (registerDreamworkTool), regras de erro/versionamento e gatilhos de revisão adiada são registrados em ARCHITECTURE.md. O catálogo de ferramentas acima é verificado contra desvios em relação às ferramentas registradas por test/tool-catalog.test.ts.

Licença

MIT