sprkly.app-mcp
O sprkly.app permite que usuários publiquem seu conteúdo de formato curto no tiktok, facebook, instagram, youtube e threads por meio de linguagem natural.
Documentação
Início rápido
Duas formas de autenticar. Escolha com base no que seu cliente suporta.
Recomendado
Conecte-se com OAuth
Para Claude Cowork, claude.ai, Claude Desktop, Claude Code e ChatGPT. Adicione o endpoint como um conector personalizado e faça login. Nada para copiar, e a conexão está vinculada ao seu login sprkly em vez de um segredo de longa duração.
- 1. Adicione https://sprkly.app/api/mcp como um conector personalizado.
- 2. Clique em Conectar e aprove as permissões.
- 3. Pergunte ao seu agente o que você tem agendado. Configuração por cliente, logo abaixo →
Scripts, CI, agentes auto-hospedados
Envie uma chave de API
Crie uma chave em Configurações → Chaves de API e envie-a como um token bearer. Não há etapa de troca nem token de curta duração para renovar.
curl -s https://sprkly.app/api/mcp \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
O MCP está incluído no teste gratuito. É a mesma autorização que a API REST, então uma chave que funciona para um funciona para ambos. Quando um teste termina sem um plano, as chamadas retornam 403 com plan_required.
Configuração do cliente
Cada cliente, clique a clique. Agentes hospedados fazem login com OAuth; qualquer coisa executada localmente pode usar uma chave de API de Configurações → Chaves de API em vez disso.
Claude Cowork
Faça login com OAuth
Dê ao Cowork sua fila de publicações para que ele possa planejar e agendar junto com o resto do seu trabalho.
- 1.No Cowork, abra Configurações (seu avatar, canto inferior esquerdo) e clique em Conectores.
- 2.Clique em Adicionar conector personalizado.
- 3.No diálogo, cole a URL do servidor abaixo no campo URL. O nome pode ser qualquer coisa. "sprkly" fica melhor.
- 4.Clique em Adicionar. sprkly aparece na lista de conectores. Clique em Conectar ao lado dele.
- 5.Uma aba de login do sprkly abre. Faça login e clique em Aprovar na tela de consentimento.
O formulário, campo por campo
Nome
sprkly
URL
https://sprkly.app/api/mcp
Concluído quando: O cartão do conector muda para Conectado, e perguntar ao Cowork "o que eu tenho agendado esta semana?" responde com sua agenda real.
O Cowork conecta-se pela nuvem da Anthropic, não pelo seu laptop. Nada para instalar. "Não foi possível alcançar o servidor MCP" quase sempre significa URL digitada errada. Copie, não redigite.
Os limites são reais, não apenas sugestões
- Não há ferramenta de publicar agora. Tudo passa pela mesma fila, limites de plano e caminho de aprovação que suas próprias publicações.
- Excluir é uma exclusão suave que você pode desfazer por 30 dias; um agente não pode tocar em uma publicação já publicada.
- Um agente só vê suas próprias contas, e uma chave de API pode ser limitada a um subconjunto delas.
- Cada chamada de ferramenta é registrada. Desconecte a qualquer momento em Configurações.
Perguntas
Quais agentes de IA podem se conectar ao sprkly?
Qualquer cliente que fale o Model Context Protocol. Isso inclui Claude Cowork, claude.ai, Claude Desktop, Claude Code, ChatGPT em modo desenvolvedor, Codex, Cursor, VS Code e ferramentas de automação como n8n. Qualquer outra coisa pode chamar o endpoint via HTTP simples com uma chave de API.
Preciso instalar algo?
Não. O sprkly executa um servidor MCP hospedado, então você cola uma URL no seu agente e faz login. Não há nada para executar na sua máquina e nada para manter atualizado.
Um agente de IA pode publicar sem me perguntar?
Ele só pode agendar para contas que você já conectou, e somente se você pedir. Você também pode exigir aprovação humana, então qualquer coisa que um agente enfileirar espera sua autorização antes de publicar. Publicações já publicadas não podem ser excluídas por um agente de forma alguma.
Quanto custa?
Nada extra. O acesso ao MCP está incluído em todos os planos pagos do sprkly e usa a mesma autorização que a API REST.
Posso limitar quais contas um agente vê?
Sim. Limite uma chave de API a contas específicas em Configurações e o agente só poderá ler e publicar nessas. Os escopos também controlam se ele pode escrever ou apenas ler.
Exemplo prático
Inicialize, liste as ferramentas e depois agende uma publicação. Substitua pela sua própria credencial.
TOKEN="sk_live_…"
MCP="https://sprkly.app/api/mcp"
# 1. Initialize (no credentials needed)
curl -s "$MCP" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-11-25",
"capabilities":{},
"clientInfo":{"name":"curl","version":"1.0"}}}'
# 2. Which accounts can I post to?
curl -s "$MCP" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"sprkly_list_profiles","arguments":{}}}'
# 3. Check the caption before committing to it
curl -s "$MCP" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{"name":"sprkly_validate_post_policy",
"arguments":{"caption":"Launch day.",
"platforms":["instagram"],
"mediaUrlsCount":1}}}'
# 4. Queue it
curl -s "$MCP" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":4,"method":"tools/call",
"params":{"name":"sprkly_schedule_post",
"arguments":{"caption":"Launch day.",
"profile_ids":["profile_…"],
"media_urls":["https://example.com/launch.jpg"],
"scheduled_time":"2026-08-04T18:00:00.000Z"}}}'
O que toda publicação precisa
Quatro coisas são sempre obrigatórias: uma legenda, pelo menos uma plataforma, um horário e mídia para as plataformas que exigem. Duas plataformas querem mais, e sprkly_schedule_post recusa a chamada em vez de adivinhar.
| Campo | Obrigatório para | Notas |
|---|---|---|
| caption | toda publicação | Verificado contra o limite de comprimento de cada plataforma antes de qualquer enfileiramento. |
| title | TikTok, YouTube | Ambas as plataformas exibem o título, não a legenda. O YouTube limita a 100 caracteres. |
| platform_meta.tiktok.privacyLevel | TikTok | O TikTok rejeita uma publicação sem isso. Envie o nível que o usuário pediu; se não for um que este criador permite, o erro nomeia os níveis que funcionam. Ou leia-os primeiro com sprkly_get_tiktok_posting_options. |
| media_urls / media_ids | Instagram, TikTok | Nenhuma aceita publicação só com texto. Passe um link diretamente e o sprkly puxa para o armazenamento por conta própria. |
A ordem do array é a ordem dos slides. Para um carrossel ou conjunto de fotos, a sequência que você envia em media_urls ou media_ids é a sequência que publica. O slide 1 tem mais peso: o Instagram corta todos os outros slides para combinar com a forma dele, e Threads e Facebook publicam apenas esse.
Uma listagem de arquivos não é uma listagem ordenada. Google Drive, Dropbox e a maioria dos nós de automação retornam arquivos em ordem de upload, que raramente corresponde à intenção. Ordene pelo nome do arquivo antes de montar o array e nomeie os arquivos para que a ordenação funcione: 01.jpg, 02.jpg, 03.jpg. Adicione o zero à esquerda, porque como texto 10 vem antes de 2. Quando a ordem foi inferida em vez de fornecida, diga isso na resposta em vez de apresentá-la como certa.
Ferramentas
16 ferramentas. Os argumentos abaixo são exatamente o que tools/list retorna.
sprkly_add_media_from_url WriteIdempotent
Baixe uma imagem ou vídeo de um link público para o sprkly e obtenha um media_id de volta, para reutilização em várias publicações. Você geralmente NÃO precisa disso: sprkly_schedule_post aceita um link diretamente em media_urls e puxa para o armazenamento por conta própria sempre que a plataforma de destino exigir. Use esta ferramenta apenas quando o usuário quiser um media_id para anexar a mais de uma publicação. Links compartilhados do Google Drive e Dropbox são convertidos automaticamente; o arquivo deve ser compartilhado publicamente. Limite de 50 MB.
| Argumento | Tipo | Descrição |
|---|---|---|
| urlobrigatório | string | Link https direto para o arquivo de imagem ou vídeo. Deve ser acessível publicamente. |
Você diz "Use este clipe para as três publicações desta semana: https://cdn.example.com/clips/launch.mp4”
O agente chama
sprkly_add_media_from_url({
"url": "https://cdn.example.com/clips/launch.mp4"
})
Retorna um mediaId que você pode anexar a várias publicações. Para uma ÚNICA publicação, não chame isso: coloque o link diretamente em media_urls no sprkly_schedule_post e ele será puxado para o armazenamento lá.
sprkly_delete_scheduled_post WriteDestructiveIdempotent
Remova uma publicação da fila. Isso é uma exclusão suave. O usuário pode restaurá-la na aba Excluídas por 30 dias. Publicações já publicadas não podem ser excluídas dessa forma. Sempre confirme com o usuário antes de chamar.
| Argumento | Tipo | Descrição |
|---|---|---|
| post_idobrigatório | string | O id da publicação agendada a excluir. |
Você diz "Descarte a publicação de terça, está desatualizada agora."
O agente chama
sprkly_delete_scheduled_post({
"post_id": "post_abc123"
})
Exclusão suave: restaurável da aba Excluídas por 30 dias. Agentes confirmam com o usuário antes de chamar.
sprkly_draft_post Write
Componha uma legenda a partir de uma dica de conteúdo e salve-a como rascunho no sprkly, moldada ao limite de legenda mais restrito entre as plataformas de destino. Retorna um id de rascunho; o rascunho aparece em /drafts para o usuário revisar.
| Argumento | Tipo | Descrição |
|---|---|---|
| content_hintobrigatório | string | Sobre o que a publicação deve ser: um tópico, frase ou mensagem-chave. |
| platforms | string[] | Plataformas pretendidas, usadas para escolher o teto de comprimento da legenda. |
| tone | string | Voz para o rascunho. casual · profissional · promocional |
| name | string | Rótulo opcional para o rascunho. |
| profile_ids | string[] | Contas opcionais para pré-selecionar no rascunho. De sprkly_list_profiles. |
Você diz "Rascunhe algo acolhedor sobre o novo espaço do estúdio para o Instagram."
O agente chama
sprkly_draft_post({
"content_hint": "first look at the new studio space",
"platforms": [
"instagram"
],
"tone": "casual"
})
sprkly_get_account_summary Somente leitura
Nível do plano, estado do teste, contagem de contas conectadas, contagens de publicações agendadas por status e as próximas três publicações futuras. Nunca retorna tokens ou segredos.
Sem argumentos.
Você diz "Como está minha conta sprkly?"
O agente chama
sprkly_get_account_summary({})
sprkly_get_analytics Somente leitura
Como as publicações do usuário realmente performaram: total de visualizações e engajamento, variação semana a semana / mês a mês / ano a ano, melhor horário de publicação, dia da semana e categoria de conteúdo, e as principais publicações por trás desses números. Cada recomendação carrega uma contagem de samples\ — diga o quão fina é a evidência em vez de apresentar um padrão de uma publicação como descoberta. Cada porcentagem de período a período carrega as contagens de publicações e totais brutos de onde veio: cite-os, porque uma grande porcentagem sobre uma base minúscula não é uma grande mudança. topPosts\ é agrupado por plataforma e classificado apenas dentro de cada grupo; relativeToPlatformBest\ compara uma publicação com outras na PRÓPRIA plataforma e nunca entre plataformas, então use o value\ absoluto e seu rótulo metric\ para pesar uma plataforma contra outra. O Instagram contribui apenas com curtidas e comentários, e Threads e Facebook não produzem métricas, então leia coverage\ antes de comparar plataformas.
| Argumento | Tipo | Descrição |
|---|---|---|
| days | inteiro (1 a 365) | Quantos dias para trás analisar. Padrão 30. |
| profile_ids | string[] | Limite a essas contas. Omita para todas as contas que esta conexão pode ver. |
Você diz "Como foram minhas publicações no mês passado e quando devo publicar?"
O agente chama
sprkly_get_analytics({
"days": 30
})
Retorna os números e a evidência por trás deles. O conselho é seu: verifique samples\ e coverage\ antes de chamar qualquer coisa de padrão.
Você diz "Quais das minhas publicações no TikTok funcionaram melhor esta semana?"
O agente chama
sprkly_get_analytics({
"days": 7,
"profile_ids": [
"prof_tiktok_main"
]
})
sprkly_get_billing_summary Somente leitura
Status da assinatura, plano atual, fim do período, handles comprados e os últimos eventos de cobrança. Sem detalhes de método de pagamento; o id do cliente Stripe é truncado.
Sem argumentos.
Você diz "Em qual plano estou e quando renova?"
O agente chama
sprkly_get_billing_summary({})
sprkly_get_post_approval_status Somente leitura
Se uma publicação está aguardando revisão humana, aprovada ou rejeitada, incluindo notas do revisor e carimbos de data/hora.
| Argumento | Tipo | Descrição |
|---|---|---|
| post_idobrigatório | string | O id da publicação agendada. |
Você diz "A publicação de lançamento já foi aprovada?"
O agente chama
sprkly_get_post_approval_status({
"post_id": "post_abc123"
})
sprkly_get_post_status Somente leitura
Detalhe completo de uma publicação: status, alvos, horários agendados e publicados, link permanente e o motivo da falha se não publicou. A mídia retorna como mediaIds em ordem de slide, não como links. Ids e ids de perfil são detalhes técnicos: fale com o usuário sobre contas pelo handle e sobre publicações pela legenda, e não leia ids em voz alta a menos que ele peça um.
| Argumento | Tipo | Descrição |
|---|---|---|
| post_idobrigatório | string | O id da publicação agendada. |
Você diz "O reel de ontem à noite realmente saiu?"
O agente chama
sprkly_get_post_status({
"post_id": "post_abc123"
})
sprkly_get_tiktok_posting_options Somente leitura
Os níveis de privacidade permitidos no TikTok deste criador e configurações de interação, buscados ao vivo do TikTok. Você geralmente NÃO precisa disso antes de agendar: sprkly_schedule_post verifica privacyLevel contra esta mesma lista por conta própria e, quando está errado, retorna os níveis que funcionariam. Chame isso apenas quando o usuário perguntar quais são as opções, ou você quiser oferecer uma escolha.
| Argumento | Tipo | Descrição |
|---|---|---|
| profile_idobrigatório | string | O id do perfil TikTok a consultar, de sprkly_list_profiles. |
Você diz "Quais opções de privacidade tenho no TikTok?"
O agente chama
sprkly_get_tiktok_posting_options({
"profile_id": "prof_tt_studio"
})
Para mostrar ao usuário suas escolhas. NÃO execute antes de sprkly_schedule_post como regra: essa chamada valida privacyLevel por conta própria e nomeia os níveis permitidos quando um está errado.
sprkly_list_connected_social_accounts Somente leitura
Toda conta social ATIVA vinculada a esta conta sprkly: plataforma, identificador, número de seguidores e se precisa ser reconectada. Contas desconectadas/inativas nunca são listadas, portanto qualquer profileId retornado aqui é um alvo de publicação válido. Nunca retorna tokens de acesso.
Sem argumentos.
Você diz "Quais contas sociais eu tenho conectadas?"
O agente chama
sprkly_list_connected_social_accounts({})
sprkly_list_profiles Somente leitura
Os ids de perfil necessários para direcionar uma publicação, com a plataforma e o identificador de cada um. Chame isto antes de sprkly_schedule_post.
Sem argumentos.
Você diz "Onde você pode publicar para mim?"
O agente chama
sprkly_list_profiles({})
Os agentes chamam isto primeiro: os ids de perfil retornados são o que sprkly_schedule_post direciona.
sprkly_list_scheduled_posts Somente leitura
A fila de publicações, da mais recente para a mais antiga, com uma prévia da legenda, alvos, status e motivo da falha. Suporta filtro por status e paginação por cursor.
| Argumento | Tipo | Descrição |
|---|---|---|
| status | string | Filtrar por status. rascunho · aguardando_aprovacao · agendado · publicado · falhou |
| limit | inteiro (1 a 50) | Número máximo de publicações a retornar. |
| cursor | string | Cursor de paginação. Passe o valor nextCursor de uma resposta anterior. |
Você diz "O que eu tenho na fila esta semana?"
O agente chama
sprkly_list_scheduled_posts({
"status": "scheduled",
"limit": 20
})
sprkly_request_post_approval Gravação
Envie uma publicação em rascunho para revisão humana. Move a publicação para aguardando_aprovacao e retorna um id de aprovação para consultar com sprkly_get_post_approval_status. Use isto quando o usuário quiser que uma pessoa aprove antes de qualquer publicação sair.
| Argumento | Tipo | Descrição |
|---|---|---|
| post_idobrigatório | string | O id da publicação em rascunho a enviar. |
| note | string | Contexto opcional para o revisor. |
Você diz "Coloque a semana na fila, mas deixe eu aprovar antes de qualquer coisa sair."
O agente chama
sprkly_request_post_approval({
"post_id": "post_abc123",
"note": "Captions drafted from the Tuesday shoot. Check the TikTok hook."
})
sprkly_schedule_post Gravação
Coloque uma publicação na fila para publicação, em UMA chamada. Anexe mídia passando o link do usuário diretamente para media_urls: a sprkly baixa para o próprio armazenamento para as plataformas que precisam disso, então nenhuma ferramenta de upload precisa ser executada antes. Executa as mesmas verificações de cota, conteúdo duplicado e pré-voo por plataforma que o aplicativo sprkly. Instagram e TikTok exigem mídia no momento do envio; YouTube e TikTok exigem um título, e o TikTok também exige platform_meta.tiktok.privacyLevel — basta enviar o nível que o usuário pediu e esta ferramenta nomeia os valores permitidos se não for um deles. Ela lê os bytes reais da mídia e a resposta diz o que realmente será publicado em cada plataforma (um Reel, um carrossel de 3 slides, um conjunto de fotos, um vídeo de feed de Página) além de qualquer coisa que valha a pena repassar: transmita isso ao usuário. Confirme a data, hora e contas de destino com o usuário primeiro. Se uma plataforma de destino tiver mais de uma conta conectada e profile_ids não for fornecido, a ferramenta retorna needsAccountChoice com as opções em vez de agendar — apresente essa escolha ao usuário e então chame novamente.
| Argumento | Tipo | Descrição |
|---|---|---|
| caption | string | Legenda da publicação, máximo 2200 caracteres. |
| platforms | string[] | Plataformas para publicar. Uma plataforma com exatamente uma conta conectada é direcionada diretamente; uma com várias faz a ferramenta responder needsAccountChoice para o usuário escolher. |
| profile_ids | string[] | Contas específicas para publicar, de sprkly_list_profiles. Quando fornecido, esta lista É o conjunto de destino — as plataformas não são expandidas. |
| all_accounts | boolean | Publicar explicitamente em TODA conta conectada em cada plataforma listada, pulando a pergunta needsAccountChoice. Só passe true quando o usuário tiver dito que quer todas as contas. |
| scheduled_time | string | Carimbo de data/hora ISO 8601 para publicar. Deve estar no futuro. Se omitido, a publicação sai na próxima execução do publicador, cerca de um minuto a partir de agora — não há escolha inteligente de horário, então passe um horário explícito a menos que o usuário queira publicação imediata. sprkly_get_analytics pode sugerir um. |
| media_urls | string[] | URLs de imagem ou vídeo publicamente acessíveis para anexar, em ordem de slide. Passe links para QUALQUER plataforma. Instagram e Threads os buscam diretamente; para TikTok, YouTube e Facebook a sprkly baixa o arquivo para o próprio armazenamento durante o agendamento, então um link também funciona lá e qualquer problema com ele é relatado agora, nesta chamada. Links de compartilhamento do Google Drive e Dropbox são convertidos automaticamente. Apenas JPEG, PNG, WebP, GIF, MP4, MOV e WebM: AVIF e HEIC (o padrão da câmera do iPhone) são recusados com instruções de reexportação, porque a sprkly não pode convertê-los. Cada arquivo deve ser publicamente acessível e ter menos de 50 MB. |
| media_id | string | Id de um único arquivo de mídia já enviado para a sprkly. Atalho para um media_ids de um item. |
| media_ids | string[] | Ids de arquivos de mídia já enviados para a sprkly, em ordem de slide. A ordem do array é a ordem publicada. Use estes quando o usuário já tiver mídia na sprkly, ou quando um arquivo for usado em várias publicações; para um link que o usuário acabou de dar, media_urls tem menos etapas. Toda foto em um conjunto deve ter o MESMO formato ou a chamada é recusada: exporte todas em 1080x1920 (9:16), 1080x1440 (3:4), 1080x1350 (4:5) ou 1080x1080 (1:1). O Instagram aceita no máximo 10 slides; conjuntos de fotos no TikTok aceitam até 35. |
| title | string | Título da publicação. Obrigatório para YouTube (máximo 100 caracteres) e TikTok (máximo 150 caracteres). |
| category | string | Categoria de conteúdo opcional, ex. "fitness". |
| platform_meta | object | Opções de publicação específicas da plataforma, organizadas por plataforma. |
Você diz "Agende isto para Instagram e TikTok na quinta às 18h."
O agente chama
sprkly_schedule_post({
"caption": "Behind the scenes of the studio setup",
"platforms": [
"instagram",
"tiktok"
],
"scheduled_time": "2026-08-13T18:00:00+08:00",
"media_id": "media_abc123",
"title": "Behind the scenes of the studio setup",
"platform_meta": {
"tiktok": {
"privacyLevel": "PUBLIC_TO_EVERYONE"
}
}
})
Com duas contas do Instagram conectadas, isto retorna needsAccountChoice e o agente pergunta: "Você tem 2 contas do Instagram, qual?" Então ele chama novamente com profile_ids. Publicações no TikTok precisam de um título e um privacyLevel de sprkly_get_tiktok_posting_options.
Você diz "Sim, a conta do estúdio. O mesmo para o TikTok."
O agente chama
sprkly_schedule_post({
"caption": "Behind the scenes of the studio setup",
"platforms": [
"instagram",
"tiktok"
],
"profile_ids": [
"prof_ig_studio",
"prof_tt_studio"
],
"scheduled_time": "2026-08-13T18:00:00+08:00",
"media_id": "media_abc123",
"title": "Behind the scenes of the studio setup",
"platform_meta": {
"tiktok": {
"privacyLevel": "PUBLIC_TO_EVERYONE"
}
}
})
Você diz "Publique estes cinco cards como um carrossel no Instagram e no TikTok."
O agente chama
sprkly_schedule_post({
"caption": "Five things nobody tells you about scheduling",
"platforms": [
"instagram",
"tiktok"
],
"scheduled_time": "2026-08-14T09:00:00+08:00",
"media_ids": [
"media_c1",
"media_c2",
"media_c3",
"media_c4",
"media_c5"
],
"title": "Five things nobody tells you about scheduling",
"platform_meta": {
"tiktok": {
"privacyLevel": "PUBLIC_TO_EVERYONE"
}
}
})
A ordem de media_ids é a ordem dos slides, e os ids vêm de mídia já na sprkly. Se o usuário tivesse colado cinco links em vez disso, media_urls os aceita na mesma ordem e a sprkly puxa cada um durante o agendamento.
Você diz "Publique isto no TikTok amanhã às 9h, só para mim por enquanto: https://drive.google.com/file/d/1AbCdEf/view?usp=sharing”
O agente chama
sprkly_schedule_post({
"caption": "Testing the new scheduler",
"platforms": [
"tiktok"
],
"scheduled_time": "2026-08-16T09:00:00+08:00",
"media_urls": [
"https://drive.google.com/file/d/1AbCdEf/view?usp=sharing"
],
"title": "Testing the new scheduler",
"platform_meta": {
"tiktok": {
"privacyLevel": "SELF_ONLY"
}
}
})
Uma chamada. O link de compartilhamento do Drive é convertido para sua forma de download e puxado para o armazenamento da sprkly durante esta chamada, então um link quebrado ou privado é relatado aqui em vez de falhar silenciosamente na hora da publicação. Não chame uma ferramenta de upload primeiro, e não consulte o nível de privacidade primeiro.
sprkly_update_scheduled_post GravaçãoIdempotente
Altere a legenda, o horário de publicação, as contas de destino ou a mídia anexada em uma publicação que ainda não foi publicada. Apenas publicações com status "agendado" podem ser editadas.
| Argumento | Tipo | Descrição |
|---|---|---|
| post_idobrigatório | string | O id da publicação agendada. |
| caption | string | Legenda substituta, máximo 2200 caracteres. |
| scheduled_time | string | Novo horário de publicação ISO 8601. Deve estar no futuro. |
| profile_ids | string[] | Contas de destino substitutas. As plataformas são derivadas novamente delas. |
| media_id | string | Id de arquivo de mídia substituto da sprkly. Atalho para um media_ids de um item. |
| media_ids | string[] | Mídia substituta, em ordem de slide. Substitui o conjunto inteiro, não anexa — passe todos os slides que você quer que a publicação mantenha. |
Você diz "Mude a publicação de sexta para sábado de manhã."
O agente chama
sprkly_update_scheduled_post({
"post_id": "post_abc123",
"scheduled_time": "2026-08-15T09:00:00+08:00"
})
sprkly_validate_post_policy Somente leitura
Verifique uma legenda contra as regras de publicação de cada plataforma de destino antes de agendar: comprimento da legenda, requisitos de mídia, limites de hashtags, se links são clicáveis, títulos obrigatórios do YouTube e avisos de PII ou conteúdo proibido. Análise pura. Não grava nada.
| Argumento | Tipo | Descrição |
|---|---|---|
| captionobrigatório | string | A legenda a verificar. |
| platformsobrigatório | string[] | Plataformas de destino para verificar. |
| mediaUrlsCount | inteiro (0 a -) | Quantas imagens ou vídeos serão anexados. Instagram e TikTok exigem pelo menos um. |
| hashtags | string[] | Hashtags publicadas junto com a legenda, se ainda não estiverem nela. |
| title | string | Título da publicação. Obrigatório para YouTube, máximo 100 caracteres. |
| platformMeta | object | Opções de publicação específicas da plataforma, organizadas por plataforma. |
Você diz "Verifique esta legenda contra as regras do TikTok primeiro."
O agente chama
sprkly_validate_post_policy({
"caption": "Three edits that doubled watch time. Full breakdown in the comments.",
"platforms": [
"tiktok"
],
"mediaUrlsCount": 1
})
Execute isto antes de agendar: ele detecta uma legenda longa demais, mídia ausente ou um título do YouTube ausente enquanto ainda é barato corrigir.
Transporte
HTTP streamable, sem estado. Mensagens JSON-RPC 2.0 são enviadas via POST para um único endpoint e respondidas com application/json. Nenhum id de sessão é emitido, então não há nada para rastrear entre chamadas.
| Método | Comportamento |
|---|---|
| POST | Carrega toda mensagem MCP. Inclua Accept: application/json, text/event-stream. |
| GET | 405. Este servidor não oferece fluxo SSE iniciado pelo servidor. |
| DELETE | 405. Sem estado, então não há sessão para encerrar. |
Versões de protocolo
Negociadas em initialize: o servidor ecoa sua revisão quando a suporta, caso contrário responde com a mais recente. Suportadas: 2025-11-25 2025-06-18 2025-03-26. Envie o valor negociado como MCP-Protocol-Version em solicitações subsequentes. Um valor não suportado é um 400.
Métodos
initialize, ping, tools/list, tools/call, resources/list e prompts/list (ambos vazios). Notificações são confirmadas com 202 e sem corpo.
Autenticação
initialize, ping e tools/list funcionam sem credenciais, então um cliente pode mostrar o que a sprkly oferece antes de alguém entrar. O primeiro tools/call é desafiado.
O desafio 401
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer error="invalid_token",
error_description="Missing bearer credentials",
resource_metadata="https://sprkly.app/.well-known/oauth-protected-resource/api/mcp",
scope="profile mcp:read mcp:write"
Siga resource_metadata para saber qual servidor de autorização usar. Esse documento nomeia esta origem, cujos metadados estão em https://sprkly.app/.well-known/oauth-authorization-server.
OAuth 2.1
- Registro Dinâmico de Cliente (RFC 7591) e Documentos de Metadados de ID de Cliente são ambos suportados. PKCE com
S256é obrigatório. - Escopos:
profilemcp:readmcp:write. Adicioneoffline_accesspara um token de atualização. mcp:readcobre toda ferramenta somente leitura;mcp:writeadiciona criação de rascunho, agendamento e exclusão.
Escopos de chave de API
Uma chave pode conter *, sprkly:* ou qualquer um de post:read, post:write, post:draft, account:read, approval:request. Uma chave com escopo para contas específicas só vê e toca nessas.
Nunca coloque uma chave de API ou token na URL do conector como parâmetro de consulta. URLs são registradas em logs, proxies e histórico do navegador, e a especificação MCP proíbe isso. Use o cabeçalho Authorization ou OAuth.
Descontinuado
Estes ainda funcionam. Nada novo precisa deles.
- https://mcp.sprkly.app/mcp. Ele faz proxy para o endpoint acima. Aponte novas integrações para https://sprkly.app/api/mcp em vez disso.
- POST /auth e POST /api/auth/mcp-token. A troca de chave de API para JWT. A chave de API agora é aceita diretamente como token bearer, então a troca e seu loop de atualização de 24 horas são desnecessários.
Precisa de ajuda?
O acesso MCP segue a mesma autorização que a API REST. Se um conector não conectar, o sinal mais rápido é se um tools/call não autenticado retorna um 401 com um cabeçalho WWW-Authenticate.