Narrareach
Rascunhe, agende e analise conteúdo para Substack, Medium, LinkedIn, X, Bluesky e Threads. Requer uma conta Narrareach elegível e login via OAuth; os recursos variam por plataforma.
Servidor MCP hospedado
npx add-mcp 'https://www.narrareach.com/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
Como o conector funciona
O Narrareach usa o Model Context Protocol via HTTPS. Claude, ChatGPT, Gemini e Notion Agents descobrem o endpoint, registram um cliente OAuth dinamicamente, enviam o usuário pelo login do Narrareach e autorizam solicitações MCP futuras. O MCP está incluído nos planos pagos com agendamento e análises.
Um URL
Os usuários fornecem /mcp. O cliente descobre o restante.
OAuth
Os usuários concedem permissões pelo Narrareach. Nenhum segredo compartilhado é exposto.
DCR + PKCE
Registro dinâmico de cliente e PKCE S256 cuidam da configuração do cliente com segurança.
Claude
Adicionar o Narrareach como conector personalizado
No Narrareach, abra Configurações > Integrações > Claude e use os valores abaixo no Claude. Deixe as Configurações avançadas fechadas. O Claude registra o cliente OAuth automaticamente.
Nome
Narrareach
URL do conector
https://www.narrareach.com/mcp

ChatGPT
Adicionar o Narrareach como plugin do ChatGPT
No Narrareach, abra Configurações > Integrações > ChatGPT e crie um plugin do ChatGPT com os valores abaixo. Mantenha a Autenticação definida como OAuth. Os usuários não devem colar um ID de cliente ou segredo de cliente.
- No ChatGPT, abra as configurações de Plugins e crie um novo plugin.
- Insira o Nome, a descrição opcional e o URL do servidor abaixo.
- Mantenha a Autenticação em OAuth, aceite o aviso de MCP personalizado e clique em Criar.
- Conclua o login no Narrareach com o mesmo e-mail da sua conta Narrareach.
Nome
Narrareach
Descrição
Content growth engine for writers
URL do servidor
https://www.narrareach.com/mcp
Novo plugin
×
Ícone (opcional)
Somente PNG. Melhores resultados em 256 × 256 px ou maior.
Tamanho máximo do arquivo: 10 KB
Conexão
URL do servidorTúnel
https://www.narrareach.com/mcp
Autenticação
OAuth▾
Configurações avançadas de OAuth
Revise as configurações de OAuth descobertas ou insira-as manualmente.
Servidores MCP personalizados apresentam riscos. Saiba mais
Criar
Nota do administrador
Se seu provedor de autenticação ainda aplicar uma lista de permissões de redirecionamento, adicione o URI de callback do ChatGPT mostrado no gerenciamento do aplicativo ChatGPT (por exemplo, https://chatgpt.com/connector/oauth/…). Garanta que o cliente OAuth possa solicitar openid, profile, email e offline_access. Essa é uma tarefa de configuração do administrador, não uma etapa de configuração do usuário.
Perguntas frequentes
Por que o ChatGPT diz "Recurso não encontrado" quando as ferramentas do Narrareach estão visíveis?
O ChatGPT pode não conseguir resolver uma ação de plugin em cache ou um anexo anterior antes de enviar a solicitação ao Narrareach. Inicie uma nova conversa para que o ChatGPT recarregue a lista de ferramentas. Se o erro continuar, remova e reconecte o plugin do Narrareach e anexe a imagem novamente. Ações bem-sucedidas de perfil ou leitura não descartam esse erro de ação ou anexo no lado do cliente.
Como devo enviar uma imagem gerada pelo ChatGPT com um artigo?
Envie os bytes reais da imagem, não uma referência temporária de anexo do ChatGPT ou um URL blob: ou file:. Peça ao ChatGPT para usar schedule_article com coverImage ou media como um URI de dados ou valor base64. Ele também pode chamar upload_media primeiro e usar o URL público retornado.
O create_draft pode salvar uma imagem de artigo sozinho?
create_draft aceita um título e um corpo HTML opcional; ele não aceita um objeto de imagem anexado. Para manter o artigo como rascunho, crie-o primeiro e depois chame update_draft com coverImage. Para agendar imediatamente, use schedule_article, que aceita capa e mídia inline.
Gemini
Adicionar o Narrareach como aplicativo personalizado do Gemini
No Narrareach, abra Configurações > Integrações > Gemini e adicione um aplicativo personalizado no Gemini com os valores abaixo. Deixe os Recursos avançados fechados, a menos que o Gemini solicite credenciais. O Gemini deve registrar o cliente OAuth automaticamente.
- Em um computador, abra gemini.google.com e vá para Configurações → Aplicativos conectados.
- Se Aplicativos conectados estiver oculto, abra Inteligência pessoal primeiro e depois Aplicativos conectados.
- Em Aplicativos personalizados, escolha Adicionar um aplicativo personalizado. Cole o URL do conector abaixo e clique em Avançar.
- Conclua o login no Narrareach com o mesmo e-mail da sua conta Narrareach.
- Em uma conversa, digite
@Narrareachpara selecionar o conector explicitamente.
URL do conector
https://www.narrareach.com/mcp
Requisitos da conta Google
O Google atualmente exige que os usuários tenham 18 anos ou mais, estejam localizados nos Estados Unidos, usem o Gemini em inglês com uma Conta do Google pessoal e com Manter atividade ativado. Contas de trabalho ou escola não podem conectar aplicativos personalizados. Conecte o aplicativo no aplicativo web do Gemini primeiro; depois disso, ele também pode ser usado no celular.
Nota do administrador
O Narrareach publica o endpoint de Registro Dinâmico de Cliente do Clerk e o suporte a PKCE S256 por meio de seus metadados OAuth. Portanto, o Gemini deve se registrar a partir do URL do conector; os usuários não precisam de um ID de cliente ou segredo. Se o Google alterar seu método de integração de clientes, verifique a solicitação de autorização ao vivo antes de alterar o Clerk.
Notion
Usar o Narrareach no Notion Agents
Isso conecta as ferramentas MCP do Narrareach ao Notion Agent ou a um Notion Custom Agent individual. É separado da conexão de importação de páginas do Notion nas Configurações do Narrareach. O Notion exige um plano Business ou Enterprise e configuração na web ou desktop; servidores MCP personalizados devem ser habilitados pelo administrador do seu workspace. Nenhum token de API ou segredo de cliente do Narrareach é necessário.
URL do conector
https://www.narrareach.com/mcp
Notion Agent
- No Notion web ou desktop, abra Configurações → Conexões → Descobrir → Adicionar MCP personalizado.
- Insira o URL do conector e faça login com sua conta Narrareach.
- Encontre o Narrareach em Todas as fontes → Servidores MCP no chat. Mencione-o pelo nome se o agente não o selecionar.
Custom Agent
- Abra as Configurações do agente → Ferramentas e acesso → Adicionar conexão → Servidor MCP personalizado.
- Insira o URL do conector, faça login com o Narrareach e escolha as ferramentas que este agente pode usar.
- Mantenha as ferramentas de escrita definidas para exigir confirmação, especialmente ações de agendamento e publicação.
Acesso e solução de problemas
O Notion Agent e cada Custom Agent exigem conexões separadas. Um administrador deve habilitar servidores MCP personalizados e, em um workspace somente com aprovação, aprovar este URL. Um Custom Agent usa as permissões do Narrareach da pessoa que o conecta, inclusive quando colegas interagem com esse agente; limite o acesso do agente de acordo. Se as ferramentas estiverem ausentes, verifique o status da conexão e atualize as configurações do agente antes de reconectar.
Instruções do Notion Agent Instruções do Custom Agent
Make
Conectar um cenário do Make pela API REST
Use o módulo HTTP do Make com um token de automação do Narrareach com escopo. Mantenha o token no armazenamento de credenciais do Make, mapeie apenas conteúdo aprovado na solicitação e preserve o identificador do Narrareach retornado para verificações de status e novas tentativas seguras.
- Crie um token nas Configurações do Narrareach > Integrações > API REST e webhooks com apenas os escopos necessários.
- Adicione um módulo de solicitação HTTP e use o endpoint e o corpo do contrato OpenAPI público.
- Armazene o token como uma credencial e envie-o no cabeçalho Authorization.
- Use um ID de registro de origem estável como chave de idempotência quando houver suporte.
- Armazene o ID do item aceito e verifique o status antes de tentar novamente após um tempo limite.
n8n
Usar o nó da comunidade Narrareach no n8n
Instale n8n-nodes-narrareach para ações nativas de Agendar artigo, Agendar nota, Obter status, Reagendar e Cancelar. O n8n lida com gatilhos e ramificações, enquanto o Narrareach lida com destinos conectados e estado de publicação.
- Instale
n8n-nodes-narrareachem Community Nodes. - Crie um token de automação do Narrareach com escopo e salve-o apenas na credencial do n8n.
- Mapeie conteúdo aprovado, destino, horário de agendamento, fuso horário e um ID de origem estável.
- Execute um teste canário com data futura e confirme com Obter status antes de ativar o fluxo de trabalho.
Clientes LLM descobrem a autenticação do Narrareach por meio de metadados baseados em padrões. Esses endpoints devem permanecer públicos e servidos via HTTPS.
Recurso MCP
https://www.narrareach.com/.well-known/oauth-protected-resource/mcp
Servidor de autenticação (ChatGPT)
https://www.narrareach.com/.well-known/oauth-authorization-server/mcp
Servidor de autenticação (Clerk)
https://clerk.narrareach.com/.well-known/oauth-authorization-server
Recurso
https://www.narrareach.com/mcp
Obrigatório
Os metadados de autorização devem incluir um registration_endpoint.
Obrigatório
O suporte a PKCE deve anunciar S256.
Guia de publicação
Editar posts agendados do LinkedIn com o ChatGPT
Use o ChatGPT, Claude ou outro assistente MCP conectado para revisar e alterar um post de texto somente na fila do LinkedIn em sua conta pessoal do Narrareach. A publicação não deve ter começado. Isso não edita posts de mídia, posts publicados ou artigos agendados.
- Peça ao seu assistente para encontrar o post com
list_scheduled_items, verificarget_scheduled_item_readinesse ler o texto na fila comget_note. - Forneça o texto de substituição e peça uma prévia. O assistente usa
amend_scheduled_note_contentcom o ID do agendamento, a revisão atual comoexpectedRevisione seu texto de substituição completo. Somente a prévia não altera o post. - Revise a prévia e confirme antes que o assistente a aplique com
apply: true. Se o post tiver mudado, revise uma nova prévia antes de confirmar novamente.
Exemplo de solicitação: "Mostre o post do LinkedIn de amanhã. Prévia deste texto de substituição, mas não aplique até eu confirmar." Para mover uma Nota ou artigo para um horário diferente, use amend_scheduled_item em vez disso. Alterações em Notas de equipe ainda usam o painel da equipe.
Inspecionar rascunhos de artigos e alterar capas
A prontidão do artigo inclui um draftId. Use-o com get_draft para revisar o rascunho do Narrareach, não uma cópia verificada do que está agendado na plataforma de publicação. Para um artigo não agendado, update_draft pode alterar seu título, corpo ou imagem de capa. Edições somente de capa preservam o corpo e os controles de inscrição existentes. Ele não pode editar um agendamento de artigo ativo. Revise o status do agendamento antes de fazer alterações; não cancele ou recrie sem aprovação.
Conexões existentes
Obter novas ferramentas na sua conexão MCP
As ferramentas existentes usam o backend atualizado do Narrareach após a implantação, mas seu assistente pode manter uma lista mais antiga de ações disponíveis. Novas ferramentas aparecem quando essa lista é atualizada. O URL MCP do Narrareach permanece o mesmo.
Para uma conexão em modo de desenvolvedor do ChatGPT, abra a conexão, selecione Atualizar, confirme que as novas ações aparecem e inicie uma nova conversa. Um aplicativo gerenciado pelo workspace também pode precisar que um administrador revise e habilite novas ações. Outros clientes MCP têm seus próprios controles de atualização ou reconexão. Você não precisa desconectar o LinkedIn ou outra conta de publicação apenas porque uma ferramenta está ausente.
Guia de conexão e atualização da OpenAI
Catálogo de ferramentas
O que os LLMs podem fazer
Clientes conectados podem trabalhar com rascunhos, notas, agendamento, inspiração, análises e contexto de perfil em Substack, Medium, LinkedIn, X, Bluesky, Threads, Instagram, Facebook, TikTok e Pinterest. O acesso às ferramentas é limitado ao usuário autenticado do Narrareach. As respostas de agendamento incluem o URL do item do Narrareach; os URLs publicados na plataforma são retornados quando o destino confirma a publicação. As respostas de artigos também podem incluir advisories não bloqueantes; repasse-os como atualizações de status sem tratar o agendamento aceito como uma falha.
Escolha a conta antes de agir
Chame list_workspaces para ver as equipes e escritores aos quais você tem acesso. Os detalhes das ferramentas abaixo mostram quais chamadas aceitam workspace e writer. Rascunhos, agendamento de artigos e alterações de agendamento usam atualmente sua conta pessoal. Mantenha o mesmo workspace ao listar, ler e agendar Notas de equipe. Se o acesso à equipe falhar, não mude para publicação pessoal para contornar o problema.
Verifique Notas e artigos separadamente
Para Notas e posts sociais, use list_notes e depois get_note com o id retornado. Para artigos, use list_scheduled_posts e encontre o id do agendamento, não o ID do rascunho. Após um tempo limite, uma lista de artigos vazia não informa se uma Nota foi agendada. Verifique a conta correta, os filtros e o limite da lista antes de enviar novamente. Alterações em Notas de equipe usam atualmente o painel da equipe.
Ferramenta
Descrição
list_workspaces
Lista a conta pessoal e os workspaces de equipe autorizados, escritores e publicações.Conta e campos
Descobre o contexto da sua conta conectada. Nenhum seletor necessário. Campos obrigatórios: Nenhum.
Campos aceitos: Nenhum.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
get_user_profile
Leia o perfil do usuário atual, plano, fuso horário, status de conexão e contexto de publicação disponível.Conta e campos
Descobre o contexto da sua conta conectada. Nenhum seletor necessário.
Campos obrigatórios: Nenhum.
Campos aceitos: Nenhum.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
list_drafts
Encontre rascunhos na sua conta pessoal por título ou status.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: Nenhum.
Campos aceitos: limit, status, query.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
get_draft
Leia o conteúdo completo e os metadados de um rascunho autorizado.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: id.
Campos aceitos: id.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
create_draft
Salve um rascunho de artigo na sua conta pessoal sem agendá-lo.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: title.
Campos aceitos: title, contentHtml.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
update_draft
Atualize o título, o corpo ou a imagem de capa de um rascunho de artigo não agendado.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: id.
Campos aceitos: id, title, contentHtml, coverImage.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
archive_draft
Arquive um rascunho próprio depois que os agendamentos ativos forem tratados.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: id.
Campos aceitos: id.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
list_notes
Encontre Notes e posts sociais agendados, publicados ou com falha.Conta e campos
Conta pessoal por padrão; aceita um workspace de equipe autorizado.
Campos obrigatórios: Nenhum.
Campos aceitos: limit, status, platform, query, workspace, writer.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
get_note
Leia um Note autorizado e seu estado de destino.Conta e campos
Conta pessoal por padrão; aceita um workspace de equipe autorizado.
Campos obrigatórios: id.
Campos aceitos: id, workspace.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
schedule_note
Agende conteúdo de formato curto para destinos de publicação conectados compatíveis.Conta e campos
Conta pessoal por padrão; aceita um workspace de equipe autorizado.
Campos obrigatórios: scheduledFor, platforms.
Campos aceitos: draftId, title, content, scheduledFor, timezone, platforms, instagramDestinations, linkedInAccountId, linkedInOrganizationUrn, workspace, writer, publication, confirmProfileDestination, substackConnectionId, imageUrls, videoUrls, threadsTopicTag, firstReply, platformVersions, media.
Campo condicional: postingAs. Disponível somente quando o schema da sua ferramenta conectada o inclui. Selecione um pseudônimo, perfil ou rótulo de publicação conectado do Substack. Use postingAs ou publication, não ambos. Este campo não concede acesso a outra conta.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
list_scheduled_posts
Liste os agendamentos de artigos na sua conta pessoal.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: Nenhum.
Campos aceitos: limit, status, from, to.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
cancel_scheduled_post
Cancele um agendamento de artigo de list_scheduled_posts.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: id.
Campos aceitos: id.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
schedule_article
Agende um artigo completo para destinos de formato longo conectados compatíveis.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: platforms.
Campos aceitos: draftId, title, contentHtml, subtitle, coverImage, media, tags, sendToNewsletter, isPaidContent, paywallMarker, addSearchMetadata, linkedinShareCommentary, linkedinPublicationType, linkedinAuthorUrn, linkedinNewsletterUrn, scheduledFor, platformSchedules, timezone, platforms, publication, substackConnectionId, mediumPublicationId, mediumNotifyFollowers.
Campo condicional: mediumPublicationId. Válido somente quando platforms inclui MEDIUM. Chame list_medium_publications e passe o id retornado; nunca adivinhe um. Quando canPublish é false, a história é enviada para revisão editorial e permanece não agendada até que um editor a aceite. Uma rejeição pela publicação é melhor esforço — a história ainda vai para o perfil pessoal e a rejeição é retornada como um aviso.
Campo condicional: mediumNotifyFollowers. Válido somente quando platforms inclui MEDIUM. O padrão é false (sem e-mail para assinantes).
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
list_linkedin_article_destinations
Atualize e liste perfis de artigos do LinkedIn, Company Pages e newsletters. Não publica conteúdo.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: Nenhum.
Campos aceitos: authorUrn, refresh.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
list_medium_publications
Liste as publicações do Medium para as quais a conta conectada pode enviar histórias. Não publica conteúdo.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: Nenhum.
Campos aceitos: refresh.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
list_linkedin_destinations
Atualize e liste perfis conectados do LinkedIn e Company Pages para posts de formato curto. Não publica conteúdo.Conta e campos
Conta pessoal por padrão; aceita um workspace de equipe autorizado.
Campos obrigatórios: Nenhum.
Campos aceitos: workspace, writer.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
list_scheduled_items
Revise Notes e artigos juntamente com seus destinos, horários e verificações de prontidão.Conta e campos
Conta pessoal por padrão; aceita um workspace de equipe autorizado.
Campos obrigatórios: Nenhum.
Campos aceitos: kind, status, from, to, limit, workspace, writer.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
get_scheduled_item_readiness
Inspecione um Note ou artigo agendado antes de fazer alterações.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: id.
Campos aceitos: id, kind.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
amend_scheduled_item
Visualize e confirme uma alteração de horário para um Note ou artigo agendado.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: id, expectedRevision, scheduledFor.
Campos aceitos: id, kind, expectedRevision, scheduledFor, timezone, apply.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
amend_scheduled_note_content
Visualize e edite o texto de um post do LinkedIn apenas com texto, na fila.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: id, expectedRevision, content.
Campos aceitos: id, expectedRevision, content, apply.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
reschedule_scheduled_item
Mova um Note ou artigo autorizado na fila para um novo horário.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: id, scheduledFor.
Campos aceitos: id, kind, scheduledFor, timezone.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
cancel_scheduled_item
Cancele um Note ou artigo autorizado na fila sem excluir seu rascunho de origem.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: id.
Campos aceitos: id, kind.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
upload_media
Envie bytes de imagem ou vídeo compatíveis para uso posterior em um fluxo de publicação autorizado.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: kind.
Campos aceitos: kind, sourceType, url, data, mimeType, fileName.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
list_inspiration_posts
Navegue pelos posts de inspiração salvos pelo usuário autenticado.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: Nenhum.
Campos aceitos: limit, platform, tag.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
get_benchmark_inspiration
Leia experimentos de escrita salvos e inspiração opcional para contas piloto elegíveis.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: Nenhum.
Campos aceitos: Nenhum.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
prepare_benchmark_inspiration
Prepare comparações de rascunhos de baixa confiança a partir de exemplos salvos para contas piloto elegíveis.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: recordId, niche.
Campos aceitos: recordId, niche.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
list_reader_activities
Liste curtidas, comentários e restacks do Substack de propriedade do usuário.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: Nenhum.
Campos aceitos: state, type, sort, cursor, limit, substackConnectionId.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
reply_to_reader_activity
Publique uma resposta a um comentário do Substack de propriedade do usuário que permita respostas.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: activityId, text.
Campos aceitos: activityId, text, idempotencyKey, substackConnectionId.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
update_reader_activity
Mova um item de atividade de leitor de propriedade do usuário entre Inbox e History.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: activityId, triageState.
Campos aceitos: activityId, triageState, substackConnectionId.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
get_platform_analytics
Busque análises compatíveis de conta e posts, ou retorne métricas armazenadas. Pode atualizar dados de conexão e análises; não publica conteúdo.Conta e campos
Somente conta pessoal. Não envie workspace ou writer.
Campos obrigatórios: platform.
Campos aceitos: platform, recentLimit.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
get_stats_insights
Leia insights armazenados do Narrareach Stats para um período selecionado.Conta e campos
Conta pessoal por padrão; aceita um workspace de equipe autorizado.
Campos obrigatórios: Nenhum.
Campos aceitos: period, from, to, platforms, contentTypes, publicationId, workspace.
Use o schema fornecido pelo seu cliente MCP para tipos de campos, opções e limites.
Abra a referência completa de ferramentas MCP prontas para agente
Mídia
Agendamento com imagens e vídeo
schedule_note aceita imageUrls para imagens HTTPS públicas e media para imagens coladas da área de transferência, URIs de dados ou base64 bruto. A mídia inline é enviada primeiro, e então o Note agendado armazena a URL pública retornada. Imagens e vídeos de artigos são tratados por meio do HTML do artigo ou da mídia do rascunho, não por um campo imageUrls de nível superior em schedule_article. Chamadas servidor a servidor podem passar imagens de Notes para POST /api/v1/notes com imageUrls.
Plataforma
Limite de mídia do Note
Substack
Até 6 imagens
X
Até 4 imagens ou 1 vídeo; imagens e vídeo não podem ser misturados
Bluesky
Até 4 imagens ou 1 vídeo; imagens e vídeo não podem ser misturados
Pelo menos um item de mídia é obrigatório; até 10 itens de mídia no total
TikTok
Até 35 imagens ou 1 vídeo; imagens e vídeo não podem ser misturados
Um item de mídia é obrigatório
Imagens são suportadas pelo caminho de publicação conectado
Threads
Imagens são suportadas pelo caminho de publicação conectado
Imagens são suportadas pelo caminho de publicação conectado
{
"jsonrpc": "2.0",
"id": "schedule-image-note",
"method": "tools/call",
"params": {
"name": "schedule_note",
"arguments": {
"content": "A short note with an attached image.",
"platforms": ["SUBSTACK", "X", "THREADS"],
"scheduledFor": "2026-07-01T14:00:00.000Z",
"timezone": "America/New_York",
"threadsTopicTag": "Creator Economy",
"imageUrls": ["https://cdn.example.com/note-image.png"]
}
}
}
URLs locais
blob: e file: URLs não podem ser buscadas pelo Narrareach. Envie a mídia ou passe-a por media.
Validação
Os limites de mídia da plataforma são verificados antes de o Narrareach criar linhas agendadas.
REST API
Agende artigos a partir do seu servidor
Chamadas REST podem agendar artigos completos com POST /api/v1/articles. O agendamento de artigos suporta SUBSTACK, MEDIUM, LINKEDIN e X. Use um token de automação com articles:write; tokens somente de nota não podem agendar artigos. Artigos do LinkedIn devem ser agendados com pelo menos 20 minutos de antecedência. Defina addSearchMetadata para gerar metadados de SEO para destinos de artigo suportados; o X não expõe configurações separadas de SEO para artigos.
scheduledFor aceita um timestamp RFC 3339 com Z ou um deslocamento UTC explícito; o Narrareach o normaliza para UTC.
Notas do LinkedIn podem publicar a partir do perfil pessoal conectado ou de uma Página da Empresa administrada. Chame GET /api/v1/linkedin/destinations e envie o accountId retornado como linkedInAccountId. Para uma Página, envie também linkedInOrganizationUrn. Omita ambos para usar o padrão das Configurações ou o único perfil pessoal disponível. O Narrareach nunca adivinha entre Páginas da Empresa. Se vários destinos existirem e nenhum puder ser selecionado com segurança, a solicitação falha com LINKEDIN_DESTINATION_REQUIRED.
Artigos do LinkedIn podem publicar a partir do perfil pessoal conectado ou de uma Página da Empresa administrada. Chame GET /api/v1/linkedin/article-destinations, escolha um authorUrn retornado e envie-o como linkedinAuthorUrn. Chame o mesmo endpoint com authorUrn para listar os boletins informativos desse perfil ou Página. Para uma edição de boletim, envie também linkedinPublicationType: "newsletter" e o linkedinNewsletterUrn retornado.
Um artigo do Medium publica no perfil próprio da conta conectada por padrão. Para enviá-lo a uma publicação, chame GET /api/v1/medium/publications e envie um id retornado como mediumPublicationId. A lista de publicações é salva para esta conexão; use ?refresh=1 quando o acesso à publicação mudar para verificar o Medium novamente. Quando canPublish for falso para essa publicação, a história é enviada para revisão editorial e fica não agendada — ela é publicada quando um editor a aceita, não no horário solicitado, e nunca publica no perfil pessoal sem o conhecimento da publicação. Caso contrário, o envio é de melhor esforço: se a publicação rejeitar a história, ela ainda publica ou agenda no perfil pessoal e a rejeição é retornada em warnings, não como uma falha. Defina mediumNotifyFollowers: true para enviar e-mail aos assinantes do Medium sobre a história; o padrão é falso e é aplicado na mesma base de melhor esforço.
Identifique o destino do Substack com publication como um nome, identificador ou URL exato de publicação conectada. Se omitido, o Narrareach pode selecionar uma única publicação ativa. Caso contrário, o chamador deve perguntar ao usuário qual publicação usar.
Quando o LinkedIn tem uma sincronização de conexão pendente, as solicitações de criação e reagendamento retornam HTTP 409 com PLATFORM_SESSION_REFRESH_REQUIRED e canRetryAfterSync: true. A nova entrada de artigo é salva primeiro, e as respostas de criação incluem saved: true com o draftId salvo. Nada é agendado até que a conexão seja sincronizada; sincronize o LinkedIn em Conexões da plataforma e repita a mesma solicitação usando esse rascunho.
O vídeo de artigo enviado está disponível apenas para solicitações de artigo exclusivas do Substack. Adicione kind: "video" a um item em media e coloque-o com um marcador {{media:N}} baseado em 1 em contentHtml. Omitir kind permanece compatível com versões anteriores e trata o item como uma imagem. O Narrareach aceita vídeo MP4, WebM, MOV e M4V de até 100MB quando buscado de uma URL pública; dados REST inline são adicionalmente limitados pelo campo de solicitação de 15.000.000 caracteres (cerca de 10,7 MiB de bytes base64 decodificados). Uma solicitação contendo vídeo de artigo é rejeitada com VIDEO_REQUIRES_SUBSTACK_ONLY se Medium, LinkedIn ou X também estiverem selecionados, para que o vídeo enviado nunca seja omitido silenciosamente. A entrada de iframe do YouTube é normalizada antes de salvar: ela publica como um embed inline nativo no Substack e permanece visível como um link canônico nos destinos selecionados que não podem incorporá-la. A entrada de iframe do Vimeo é preservada como um link canônico em todos os destinos selecionados. Se o conteúdo estruturado salvo e o HTML discordarem sobre o número ou a identidade de seus vídeos, o Narrareach retorna CONTENT_OUT_OF_SYNC antes de publicar; salve o rascunho novamente e tente de novo. A preparação do vídeo pode continuar após um agendamento ser aceito. Verifique o status do agendamento em vez de enviar outro artigo. Uma resposta VIDEO_PROCESSING significa que o vídeo ainda não está pronto. VIDEO_DISABLED com HTTP 503 significa que a publicação de vídeo está temporariamente indisponível; tente novamente após o serviço ser restaurado.
Respostas bem-sucedidas de criação e reagendamento de artigos podem incluir um array advisories quando uma plataforma selecionada está enfrentando atrasos de publicação. Os avisos são informativos: a solicitação permanece aceita, nenhum reconhecimento é necessário e actionRequired é falso.
Para criação de notas segura contra repetição, envie um cabeçalho Idempotency-Key estável para POST /api/v1/notes. O campo de corpo idempotencyKey existente permanece suportado e deve corresponder ao cabeçalho quando ambos estiverem presentes. Novas respostas de notas idempotentes incluem um operationId; use GET /api/v1/operations/:id com notes:read para inspecionar o status de recuperação após um tempo limite.
Leia o estado atual de entrega com GET /api/v1/article-schedules/:id ou GET /api/v1/notes/:id. As respostas de status são limitadas por propriedade e nunca são armazenadas em cache. Integrações podem validar uma credencial armazenada sem agendar conteúdo por meio de GET /api/v1/auth/check.
A atividade do leitor está disponível por meio de GET /api/v1/reader-activities com activity:read. Use POST /api/v1/reader-activities/:id/replies para responder a um comentário de sua propriedade e PATCH /api/v1/reader-activities/:id para mover um item entre Caixa de entrada e Histórico; ambos exigem activity:write. As ferramentas MCP correspondentes são list_reader_activities, reply_to_reader_activity e update_reader_activity.
Notas do Threads podem incluir um threadsTopicTag opcional por meio de schedule_note ou POST /api/v1/notes. Inclua THREADS em platforms. O tópico é limitado a 50 caracteres e não pode conter pontos, e comerciais ou quebras de linha; ele é armazenado apenas no destino do Threads quando uma nota tem como alvo várias plataformas.
Notas também podem incluir um firstReply opcional por meio de schedule_note ou POST /api/v1/notes. O Narrareach aplica as próprias regras de comprimento de cada destino — incluindo caracteres ponderados do X — e relata onde a resposta foi aceita ou omitida. Uma resposta que não pode ser usada nunca cancela a nota raiz.
Os limites de caracteres de notas são Bluesky 300, Threads 500, LinkedIn 3.000 e X 25.000 caracteres ponderados (publicados como um tópico); Substack e os outros destinos não têm limites. Com schedule_note ou POST /api/v1/notes, passe platformVersions, como { "BLUESKY": "..." }, para fornecer texto que se ajuste a uma plataforma. Uma versão que ainda excede seu limite é rejeitada antes que qualquer coisa seja agendada. Uma plataforma sem versão recebe um corte automático em uma quebra de frase. Cada plataforma que publica texto diferente da nota é listada em adjustedPlatforms com o texto exato, e um corte automático também adiciona um aviso para repassar ao usuário.
Criar
POST /api/v1/articles cria ou agenda um rascunho existente.
Mover
PATCH /api/v1/article-schedules/:id altera o horário na fila.
Ler
GET /api/v1/article-schedules/:id retorna o estado atual.
Cancelar
DELETE /api/v1/article-schedules/:id cancela um artigo na fila.
curl -X POST https://www.narrareach.com/api/v1/articles \
-H "Authorization: Bearer $NARRAREACH_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "My full article",
"subtitle": "Optional subtitle",
"contentHtml": "<p>Free preview.</p>[[PAID_SECTION]]<p>Paid section.</p>",
"platforms": ["SUBSTACK"],
"publication": "@theainewsroom",
"scheduledFor": "2026-12-01T14:00:00.000Z",
"timezone": "America/New_York",
"sendToNewsletter": true,
"paywallMarker": "[[PAID_SECTION]]",
"addSearchMetadata": true,
"idempotencyKey": "article-2026-12-01-001"
}'
curl \
-H "Authorization: Bearer $NARRAREACH_API_TOKEN" \
"https://www.narrareach.com/api/v1/linkedin/article-destinations"
# Then list newsletters for one returned author:
curl \
-H "Authorization: Bearer $NARRAREACH_API_TOKEN" \
"https://www.narrareach.com/api/v1/linkedin/article-destinations?authorUrn=urn%3Ali%3Afsd_company%3A110374957"
curl \
-H "Authorization: Bearer $NARRAREACH_API_TOKEN" \
"https://www.narrareach.com/api/v1/medium/publications"
Agendar artigo do Medium para uma publicação
curl -X POST https://www.narrareach.com/api/v1/articles \
-H "Authorization: Bearer $NARRAREACH_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "My Medium story",
"contentHtml": "<p>Full article body.</p>",
"platforms": ["MEDIUM"],
"mediumPublicationId": "the_id_from_list_medium_publications",
"mediumNotifyFollowers": false,
"scheduledFor": "2026-12-01T14:00:00.000Z",
"timezone": "America/New_York"
}'
curl -X POST https://www.narrareach.com/api/v1/articles \
-H "Authorization: Bearer $NARRAREACH_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Article with video",
"contentHtml": "<p>Watch the walkthrough:</p>{{media:1}}",
"media": [{
"kind": "video",
"sourceType": "url",
"url": "https://cdn.example.com/walkthrough.mp4",
"mimeType": "video/mp4",
"fileName": "walkthrough.mp4"
}],
"platforms": ["SUBSTACK"],
"publication": "@theainewsroom",
"scheduledFor": "2026-07-01T14:00:00.000Z",
"timezone": "America/New_York"
}'
curl -X PATCH https://www.narrareach.com/api/v1/article-schedules/scheduled_post_id \
-H "Authorization: Bearer $NARRAREACH_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scheduledFor": "2026-07-02T14:00:00.000Z",
"timezone": "America/New_York"
}'
Agende artigos do Substack com a API do Narrareach
Use a API de agendamento de artigos do Narrareach para publicar um artigo de boletim informativo em um horário escolhido, definir sua prévia gratuita e incluir um botão de assinatura nativo. O mesmo fluxo de trabalho de publicação está disponível por meio do conector MCP do Narrareach no ChatGPT ou Claude. Estes são endpoints do Narrareach para suas publicações conectadas — não endpoints fornecidos pelo Substack.
Este guia cobre artigos de formato longo. Para Notas curtas do Substack, use schedule_note ou POST /api/v1/notes em vez disso. A configuração de acesso de um artigo pago, sua posição de paywall e sua configuração de entrega por e-mail são decisões separadas.
Antes da sua primeira solicitação de artigo
- Conecte a publicação pretendida no Narrareach e confirme que ela está pronta. O acesso à API não conecta uma conta automaticamente.
- Para REST, use uma conta com acesso à API e um token de automação com
articles:write. Envie-o comoAuthorization: Bearer <token>. Mantenha-o no seu servidor, nunca em código do lado do cliente ou exemplos compartilhados. - Para ChatGPT ou Claude, use o conector autorizado do Narrareach. Você não precisa colar um token de API na conversa.
- Escolha a publicação, um horário e fuso horário de publicação futuros, o acesso do leitor e se deseja enviar e-mail. Confirme essas escolhas com o escritor antes de agendar.
Envie publication como um nome, identificador ou URL de publicação conectada. O Narrareach pode selecionar uma única publicação ativa do Substack quando omitido; quando houver múltiplas possibilidades, escolha explicitamente. Enviá-lo explicitamente é a opção mais clara para automações repetíveis. Verifique acesso ao plano e a referência OpenAPI para os requisitos atuais do endpoint.
Prévia gratuita, assinantes pagos e e-mail do boletim
Artigo público
Use isPaidContent: false sem um divisor de paywall. Adicionar um botão de assinatura não torna um artigo pago.
Artigo pago com prévia gratuita
Coloque <hr data-type="paywall"> após a parte gratuita. O Narrareach trata um divisor explícito como acesso pago, mesmo se isPaidContent foi omitido ou falso. Selecione apenas Substack para esta versão.
Público pago sem divisor personalizado
Use isPaidContent: true. Isso seleciona acesso pago; não escolhe um limite de prévia personalizado para você. Inclua um divisor quando quiser um trecho gratuito específico.
Entrega por e-mail
sendToNewsletter tem como padrão verdadeiro para um novo artigo. Defina-o como falso quando quiser publicar sem enviar o e-mail do boletim. Adicionar um paywall não altera essa escolha.
Um paywall do Substack não é um controle de acesso portátil para LinkedIn, Medium ou X. Crie um trecho público separado ou um artigo público para esses destinos. Não envie texto protegido para outra plataforma presumindo que o divisor do Substack o protegerá lá.
Adicione um botão de assinatura com uma legenda
Coloque este HTML onde o leitor deve ver o convite de assinatura. Use sua própria legenda e escape aspas e outros caracteres especiais nos valores de atributos.
<div data-type="button" data-kind="subscribeCaption"
data-text="Subscribe"
data-caption="Get the complete guide and future editions."></div>
Para um botão sem legenda, use data-kind="subscribe" e omita data-caption. Um link comum permanece um link; uma URL de assinatura encurtada não se torna automaticamente um botão de assinatura nativo. Um botão e um paywall servem a propósitos diferentes: um convida a uma assinatura, o outro define onde o conteúdo pago começa.
Exemplo: agende um artigo pago sem enviar e-mail
Envie este JSON para POST https://www.narrareach.com/api/v1/articles com seu cabeçalho de autorização e Content-Type: application/json. Substitua a publicação e a data de exemplo. O Z do timestamp significa UTC: 14:00 UTC é 09:00 em Nova York nesta data de exemplo. Um deslocamento UTC explícito também é aceito; mantenha-o consistente com seu fuso horário nomeado.
{
"title": "A practical guide for newsletter writers",
"contentHtml": "<p>This introduction is the free preview.</p><div data-type=\"button\" data-kind=\"subscribeCaption\" data-text=\"Subscribe\" data-caption=\"Get the complete guide and future editions.\"></div><hr data-type=\"paywall\"><p>This section is for paid subscribers.</p>",
"platforms": [
"SUBSTACK"
],
"publication": "@your-publication",
"scheduledFor": "2026-12-01T14:00:00Z",
"timezone": "America/New_York",
"isPaidContent": true,
"sendToNewsletter": false,
"idempotencyKey": "newsletter-guide-december-01"
}
Se o seu sistema de conteúdo usar um espaço reservado personalizado, coloque-o uma vez no texto do artigo no limite desejado e forneça a mesma string como paywallMarker. Por exemplo, [[PAID_SECTION]] em contentHtml com paywallMarker: "[[PAID_SECTION]]". Não o coloque em uma URL ou legenda de botão. O HTML de divisor nativo é a opção mais direta.
Leia a resposta de agendamento
Uma solicitação recém-aceita retorna HTTP 202. A seguir está uma resposta ilustrativa; seus IDs, status e datas serão diferentes. Salve tanto draftId quanto cada scheduled[].id. Um ID de agendamento identifica uma entrega agendada, não o rascunho do artigo.
{
"success": true,
"mode": "schedule",
"draftId": "draft_example",
"article": {
"id": "draft_example",
"title": "A practical guide for newsletter writers",
"status": "SCHEDULED"
},
"scheduled": [
{
"id": "schedule_example",
"platforms": [
"SUBSTACK"
],
"status": "PENDING",
"scheduledFor": "2026-12-01T14:00:00.000Z",
"timezone": "America/New_York",
"publishedAt": null,
"error": null
}
],
"idempotencyKey": "newsletter-guide-december-01"
}
A aceitação não é prova de publicação. O resumo do artigo diz SCHEDULED, enquanto uma entrega recém-enfileirada começa como PENDING. Leia GET /api/v1/article-schedules/:id usando o ID de agendamento retornado para verificar o estado da entrega. Esses endpoints de agendamento de artigo usam articles:write. Exiba warnings ou advisories informativos quando presentes, mas não trate um aviso isolado como falha.
Agendar um rascunho existente, reagendar ou cancelar
Para agendar um artigo salvo, envie draftId em vez de novos campos de título e corpo. Isso agenda seu conteúdo salvo e configurações de público; não é uma operação de edição. Revise ou atualize o rascunho primeiro se essas configurações precisarem mudar. Não forneça paywallMarker com um rascunho existente.
{
"draftId": "draft_example",
"platforms": [
"SUBSTACK"
],
"publication": "@your-publication",
"scheduledFor": "2026-12-02T14:00:00Z",
"timezone": "America/New_York",
"idempotencyKey": "existing-draft-december-02"
}
Para mover um agendamento existente, use PATCH /api/v1/article-schedules/:id com scheduledFor e, opcionalmente, timezone. Não crie outro agendamento apenas para mudar o horário. Para cancelar uma entrega enfileirada, use DELETE /api/v1/article-schedules/:id. O cancelamento não é uma forma de retratar um artigo já publicado; leia o estado atual antes de agir.
Agendar um boletim informativo do Substack a partir do ChatGPT ou Claude
Com o conector Narrareach habilitado, descreva o resultado desejado em linguagem comum. Você não precisa escrever HTML. Por exemplo:
Agende meu artigo aprovado para @your-publication em 1º de dezembro às 9h, horário de Nova York. Mantenha a introdução gratuita e coloque o paywall antes de "O guia completo". Adicione um botão de inscrição logo antes do paywall com a legenda "Receba o guia completo e edições futuras". Publique sem enviar e-mail. Confirme a publicação e essas escolhas antes de agendar.
A ferramenta correspondente é schedule_article. Ela usa os mesmos campos de título, conteúdo HTML, destino, agendamento e público; o campo idempotencyKey da REST e o envelope de resposta REST não são argumentos da ferramenta MCP. Se o limite pretendido não estiver claro, o assistente deve perguntar qual parágrafo termina a prévia gratuita. Uma colocação clara não deve exigir outra pergunta de formatação. Após o agendamento, mantenha o resultado retornado e use list_scheduled_posts, reschedule_scheduled_item ou cancel_scheduled_item para gerenciá-lo.
Lidar com erros e tentativas sem artigos duplicados
Para criação de artigo via REST, envie um idempotencyKey estável no corpo JSON. Após um timeout, verifique a fila e tente novamente o mesmo corpo com a mesma chave, em vez de criar imediatamente uma nova solicitação. Uma repetição bem-sucedida pode retornar HTTP 200. Se você alterar intencionalmente a solicitação, primeiro verifique se o agendamento anterior existe; depois use uma nova chave para a nova operação. Este contrato de artigo é separado do cabeçalho de idempotência do Notes.
Para respostas sem sucesso, leia error.code, error.message, error.resolution e qualquer error.details. Mantenha instruções úteis de recuperação visíveis para o escritor.
400 · INVALID_PAYWALL_MARKER
Confirme um único limite de prévia gratuita. Remova posições conflitantes ou escolha uma versão pública separada para outra plataforma; não tente novamente com conteúdo inalterado.
400 · SUBSTACK_PUBLICATION_REQUIRED / SUBSTACK_PUBLICATION_AMBIGUOUS
Forneça o nome, handle ou URL exato da publicação conectada. Não escolha uma publicação em nome do escritor.
400 · VALIDATION_ERROR / INVALID_MEDIA
Verifique os campos identificados pela resposta, seu horário futuro de publicação e os requisitos de mídia na referência.
409 · PLATFORM_NOT_READY / PLATFORM_SESSION_REFRESH_REQUIRED
Reconecte a plataforma nomeada no Narrareach. Se a resposta incluir um draftId salvo, mantenha-o e agende esse rascunho após reconectar.
409 · CONTENT_OUT_OF_SYNC
Abra e salve o artigo em seu editor, verifique a prévia e tente agendar novamente.
409 · IDEMPOTENCY_IN_PROGRESS
Aguarde e verifique a fila. Não alterne chaves apenas para contornar uma solicitação em andamento.
409 · IDEMPOTENCY_CONFLICT
Essa chave pertence a um conteúdo de solicitação diferente. Verifique o resultado anterior antes de enviar uma solicitação intencionalmente diferente com uma nova chave.
Erros de autenticação e acesso exigem um token válido, o escopo necessário e uma conta elegível. Para limites de taxa ou erros temporários de serviço, siga as orientações de tentativa retornadas; não reenvie continuamente. Nunca envie tokens, corpos de artigos não publicados ou credenciais de conta em uma captura de tela de suporte.
Próximo: revise os exemplos de endpoints REST, conecte o ChatGPT ou consulte os esquemas completos de solicitação.
Acesso
Planos e limites de taxa
Os planos pagos incluem acesso MCP, agendamento com capacidade de imagem e análises. O Modo Agente Completo inclui fluxos de trabalho de API REST e webhook para integrações diretas servidor a servidor.
Limite MCP
Cada usuário recebe 120 unidades de solicitação MCP por 10 minutos. Um lote JSON-RPC consome uma unidade por item no lote.
Agendamento em massa
Isso permite uma execução em massa de 62 itens do Notes, além de chamadas de configuração e status. Para lotes com muitas imagens, mantenha o comportamento normal de tentativa/backoff do cliente habilitado.
Solução de problemas
Problemas comuns de conexão
Incompatibilidade de URI de redirecionamento
Confirme se o registro dinâmico de cliente está habilitado. Clientes registrados dinamicamente fornecem seu callback durante o registro. Para um cliente pré-registrado manualmente, adicione apenas o URI de callback exato fornecido por esse cliente no nível do provedor.
Escopo openid ausente
O ChatGPT solicita openid durante a autorização. Se o aplicativo OAuth do Clerk permitir apenas profile/email, adicione openid (e geralmente offline_access) nesse cliente OAuth.
Falha na verificação OAuth
Se os logs do servidor mencionarem um formato JWT inválido, o endpoint está tentando analisar uma credencial OAuth opaca do Clerk como um JWT. Valide-a por meio do fluxo com reconhecimento OAuth do Clerk.
Localhost não funciona em clientes hospedados
Claude, ChatGPT e Gemini exigem HTTPS para conectores remotos. Use a URL de produção ou exponha o desenvolvimento local por meio de um túnel HTTPS.