TwitterAPIs MCP

112 endpoints do Twitter/X (68 leituras, 44 gravações) atrás de uma chave hospedada ou um servidor MCP para Claude e Cursor. $0,50 em créditos gratuitos no cadastro, sem necessidade de cartão.

Servidor MCP hospedado

npx add-mcp 'https://api.twitterapis.com/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

@twitterapis/mcp

npm version npm downloads license

Servidor oficial do Model Context Protocol para twitterapis.com, a API do Twitter / X como ferramentas nativas para Claude, Cursor, Windsurf e qualquer cliente MCP. Leituras (busca, perfis, timelines, seguidores, DMs) além de ações de escrita (postar, curtir, retweetar, seguir).

Peça ao seu agente para buscar tweets, puxar o perfil ou a timeline de um usuário, listar seguidores/seguindo, buscar contexto de threads ou enumerar membros de listas, e ele chama a API diretamente. Cada ferramenta mapeia para um endpoint REST em https://api.twitterapis.com; o servidor não mantém estado e encaminha sua chave de API em cada chamada.

Início rápido

Não é necessária instalação. Execute com npx. Você precisa de uma coisa: uma chave de API (US$ 0,50 grátis em créditos, sem cartão de crédito): twitterapis.com/signup.

Configuração

Claude Desktop

Edite claude_desktop_config.json (Configurações → Desenvolvedor → Editar Config):

{
  "mcpServers": {
    "twitterapis": {
      "command": "npx",
      "args": ["-y", "@twitterapis/mcp@latest"],
      "env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
    }
  }
}

Reinicie o Claude Desktop. As ferramentas twitter_* aparecem no seletor de ferramentas.

Cursor

~/.cursor/mcp.json (ou Configurações → MCP → Adicionar Novo Servidor):

{
  "mcpServers": {
    "twitterapis": {
      "command": "npx",
      "args": ["-y", "@twitterapis/mcp@latest"],
      "env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "twitterapis": {
      "command": "npx",
      "args": ["-y", "@twitterapis/mcp@latest"],
      "env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
    }
  }
}

VS Code (Copilot / modo agente)

.vscode/mcp.json no seu workspace, ou as configurações de MCP no nível do usuário:

{
  "servers": {
    "twitterapis": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@twitterapis/mcp@latest"],
      "env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
    }
  }
}

Configuração

Variável de ambienteObrigatóriaPadrãoFinalidade
TWITTERAPIS_KEYSim(nenhum)Chave de API do painel
TWITTERAPIS_BASE_URLNãohttps://api.twitterapis.comSubstituir o host da API
TWITTERAPIS_TIMEOUT_MSNão30000Tempo limite por requisição em milissegundos

Ferramentas

112 ferramentas: 68 leituras e 44 ações de escrita. A maioria dos endpoints de usuário aceita username (handle sem @) ou user_id (twitter_user_likes e twitter_user_tweets_complete exigem user_id); endpoints de tweets aceitam id ou url; endpoints paginados retornam um cursor que você passa de volta para obter a próxima página. Toda leitura de dados (exceto twitter_audience_summary, que sempre retorna seu resumo completo) também aceita fields (caminhos pontilhados separados por vírgula para manter, ex.: id,text,author.username; paginação e chaves de envelope sempre sobrevivem) e compact ("1" para um preset embutido de ids, texto, contagens e informações básicas do autor), para que um modelo que paga por token possa reduzir uma página ao que vai ler. Quatro das leituras são consultas gratuitas de conta (twitter_account_me, twitter_account_payments, twitter_feedback_get, twitter_feedback_list); as 14 ferramentas de monitoramento e twitter_feedback_send também são gratuitas (administração de conta, não leituras medidas).

Leituras públicas (busca, perfis, tweets, seguidores, curtidas) funcionam apenas com sua chave de API. As leituras somente de conta (bookmarks, DMs, timeline inicial, seguidores-que-você-conhece) e a maioria das ações de escrita agem COMO uma conta X autenticada, então precisam de uma sessão vinculada à sua chave primeiro (retorna HTTP 409 até então). Vincule uma sessão registrando seus cookies do x.com (twitter_customer_session) ou fazendo login com nome de usuário/senha (twitter_user_login). Alternativamente, passe credenciais inline por chamada em qualquer uma dessas ferramentas (auth_token + ct0, com proxy_url / user_agent opcionais) para agir COMO aquela conta em uma única chamada, sem pré-registrar uma sessão, permitindo que uma chave de API atue como várias contas. Para ações de escrita, defina proxy_url para um proxy residencial, já que o X bloqueia suavemente escritas que saem de IPs de datacenter. Cada ferramenta de escrita é anotada com readOnlyHint: false; ações reversas (excluir, deixar de seguir, descurtir, desfazer retweet, remover bookmark, excluir monitor/webhook) são anotadas com destructiveHint: true para que clientes MCP possam solicitar confirmação antes de executá-las. As ferramentas de monitoramento e feedback (veja abaixo) são a exceção: elas administram sua conta twitterapis.com, não uma sessão X, então precisam apenas da sua chave de API, sem sessão vinculada e sem credenciais inline.

Leituras

FerramentaO que faz
twitter_advanced_searchBusca tweets com operadores X (from:, min_faves:, since:, filter:links, etc.)
twitter_user_searchEncontra contas de usuário por nome ou palavra-chave
twitter_user_infoPerfil completo por handle (bio, contagens, verificação, localização)
twitter_user_info_by_idPerfil completo por id numérico de usuário
twitter_user_statusVerifica se uma conta está ativa, suspensa ou excluída
twitter_user_aboutObjeto About estruturado de um usuário (categoria, rótulos profissionais/empresariais, verificação + sinalizadores de verificação de identidade, data de adesão e o painel de transparência 'Sobre esta conta' do X)
twitter_user_about_batchO mesmo objeto About para até 100 contas em uma chamada (usernames ou user_ids), cobrado por conta respondida; para avaliar uma lista por país ou histórico de conta
twitter_audience_summaryQuem é um público: um histograma por país e a parcela provável de bots em uma amostra de até 100 seguidores ou retweeters
twitter_user_affiliatesContas afiliadas a um perfil de organização
twitter_check_follow_relationshipRelação de seguir entre duas contas, por id ou username (quem segue quem)
twitter_check_follow_relationship_batchUma conta contra até 100 outras em uma chamada, em qualquer direção (quais dessas contas seguem a marca)
twitter_user_tweetsTweets originais recentes de um usuário (respostas excluídas)
twitter_user_tweets_and_repliesTimeline completa de um usuário (tweets + respostas)
twitter_user_tweets_completeUm grande lote do histórico de tweets de um usuário por chamada (veja nota de paginação)
twitter_user_mediaImagens e vídeos que um usuário publicou
twitter_user_mentionsTweets públicos recentes mencionando um usuário
twitter_user_likesTweets que um usuário curtiu (aba pública de Curtidas)
twitter_user_followersContas que seguem um usuário
twitter_user_followingContas que um usuário segue
twitter_user_followers_v2Seguidores com o formato de resposta v2 (campos mais ricos, cursor mais profundo)
twitter_user_following_v2Seguindo com o formato de resposta v2 (campos mais ricos, cursor mais profundo)
twitter_user_verified_followersApenas seguidores verificados de um usuário
twitter_followers_you_knowSeguidores de um alvo que sua conta autenticada também segue
twitter_tweet_detailTweet único: texto, autor, métricas, mídia, contexto de citação/resposta
twitter_tweet_repliesRespostas a um tweet
twitter_tweet_threadThread completa do autor (cadeia de tweets conectados do mesmo autor)
twitter_tweet_retweetersContas que retweetaram um tweet
twitter_tweet_quotesTweets que citam um tweet, com seu texto. Baseado em busca, então count é o que a busca retornou, não o quote_count verdadeiro do tweet
twitter_list_membersMembros de uma Lista do Twitter/X
twitter_list_followersContas que seguem uma Lista pública (um conjunto diferente de seus membros)
twitter_list_tweetsPosts dos membros de uma Lista, baseado em busca: filtrável por data since / until, include_replies e product (Mais recentes / Principais), sem retweets
twitter_list_timelineFeed nativo X de uma Lista: retweets e a própria ordenação do X incluídos, sem filtros, apenas paginação
twitter_home_timelineTimeline inicial da sua conta autenticada (sessão)
twitter_bookmarksBookmarks da sua conta autenticada (sessão)
twitter_blockingContas que sua conta autenticada bloqueou (apenas sua própria lista) (sessão)
twitter_mutingContas que sua conta autenticada silenciou (apenas sua própria lista) (sessão)
twitter_bookmark_searchBusca de texto completo dentro dos seus bookmarks (sessão)
twitter_bookmark_foldersPastas de bookmarks da sua conta autenticada (sessão)
twitter_bookmark_folder_timelineTweets dentro de uma das suas pastas de bookmarks, por folder_id (sessão)
twitter_dm_listSuas conversas de DM (caixa de entrada), somente leitura (sessão)
twitter_dm_conversationMensagens em uma conversa de DM, somente leitura; passe o min_entry_id da página anterior como max_id para voltar de página (sessão)
twitter_spaces_infoMetadados e lista de participantes de um X Space, ao vivo ou encerrado (por id do Space)
twitter_community_searchEncontra Comunidades X por palavra-chave; a etapa de descoberta que produz o id numérico que o restante da família de comunidades precisa
twitter_community_infoUma Comunidade X por id numérico: nome, contagens, política de adesão, regras, tópico, banners, admin
twitter_community_aboutModeradores de uma comunidade e uma prévia de membros, cada um retornado como um perfil de usuário completo, não a linha reduzida que _members/_moderators retornam
twitter_community_membersLista de membros de uma comunidade, cada linha carregando o papel Admin / Moderator / Member daquele membro
twitter_community_moderatorsModeradores e admins de uma comunidade, a partir de sua própria operação upstream (não um filtro sobre a lista)
twitter_community_tweetsTimeline de posts de uma comunidade, com o post fixado retornado como seu próprio campo pinned
twitter_community_membershipsA consulta inversa: toda comunidade à qual um determinado user_id numérico pertence
twitter_grok_chatPergunte ao Grok do próprio X, fundamentado em dados X ao vivo, e obtenha a resposta além das fontes que ele citou
twitter_grok_configSe a conta autenticada pode usar o Grok e quais modelos ela pode escolher
twitter_trendsPrincipais tendências atuais para um local (por country ou woeid), uma aba do X Explore (por category) ou apenas as tendências que o X rotula como Negócios e finanças (category=business_and_finance)
twitter_trends_locationsTodo local para o qual o X tem tendências, cada um com seu WOEID
twitter_account_meSua conta twitterapis.com: créditos, uso, e-mail (grátis)
twitter_account_paymentsSeu histórico de pagamentos twitterapis.com (grátis)
twitter_media_statusEstado de processamento de um media_id enviado; faça polling até succeeded antes de anexar vídeo ou GIF (sessão)
twitter_article_getLeia o conteúdo completo de um artigo publicado via id/url do tweet de anúncio (público, sem sessão)
twitter_article_listListe seus próprios artigos, filtrados por lifecycle (draft ou published) (sessão)

Ações de escrita (exigem uma sessão X vinculada)

FerramentaO que faz
twitter_create_tweetPublica um tweet; defina reply_to para responder ou quote para citar tweet
twitter_delete_tweetExclui um dos seus tweets (irreversível)
twitter_favorite_tweet / twitter_unfavorite_tweetCurtir / descurtir um tweet
twitter_retweet / twitter_unretweetRetweetar / desfazer retweet
twitter_bookmark_tweet / twitter_unbookmark_tweetAdicionar / remover bookmark
twitter_follow_user / twitter_unfollow_userSeguir / deixar de seguir um usuário por user_id ou username (exatamente um)
twitter_dm_sendEnvia uma Mensagem Direta a um usuário pelo recipient_id numérico dele
twitter_list_createCria uma Lista do Twitter/X de propriedade da sua sessão (name, description / is_private opcionais)
twitter_list_add_member / twitter_list_remove_memberAdicionar / remover uma conta em uma Lista que você possui; member_count volta como prova de que a escrita foi concluída
twitter_media_uploadEnvia uma imagem em base64, retorna um media_id para twitter_create_tweet
twitter_update_profileAltera seu próprio nome, bio, localização ou link. Uma atualização PARCIAL: campos omitidos mantêm seus valores, uma string vazia limpa um campo
twitter_update_avatarSubstitui sua própria foto de perfil. Aceita bytes de imagem em base64 em image, não uma URL e não um media_id. Sem desfazer, e o X não mantém histórico
twitter_update_bannerSubstitui sua própria imagem de cabeçalho. Aceita bytes de imagem em base64 em banner, não uma URL e não um media_id. Sem desfazer, e o X não mantém histórico

Rascunhos e posts agendados (exigem uma sessão X vinculada)

Um rascunho é privado e nunca é publicado. Um post agendado será publicado publicamente no seu execute_at a menos que você o cancele antes. Ambas as listas leem apenas a sua própria conta.

FerramentaO que faz
twitter_draft_createSalva um rascunho privado na sua conta; nada é publicado
twitter_draft_editSubstitui o conteúdo de um rascunho por id; os campos enviados tornam-se o rascunho
twitter_draft_deleteExclui um rascunho por id; ele nunca foi público, então nada é retirado
twitter_draft_listLista seus rascunhos, cada um com text e thread_truncated
twitter_scheduled_createAgenda uma postagem para um execute_at futuro em epoch segundos, não milissegundos
twitter_scheduled_deleteCancela uma postagem agendada pendente antes que ela seja enviada
twitter_scheduled_listLista sua fila pendente; execute_at retorna em epoch segundos

Ambas as ferramentas de listagem podem retornar partial: true, o que significa que a resposta do X foi lida, mas não totalmente compreendida. Isso não é o mesmo que uma lista vazia: em uma leitura limpa, o sinalizador está totalmente ausente, então um array vazio sem partial significa que você realmente não tem nada na fila ou como rascunho.

Artigos (recurso "Notes" de formato longo do X; gravações exigem uma sessão X vinculada)

FerramentaO que faz
twitter_article_createInicia um novo artigo rascunho, retorna seu id
twitter_article_update_titleDefine o título de um artigo rascunho ou publicado
twitter_article_update_cover_mediaAnexa uma imagem já enviada como capa de um artigo (media_id de twitter_media_upload)
twitter_article_update_contentSubstitui o corpo de um artigo rascunho ou publicado (content_state Draft.js que você constrói)
twitter_article_publishPublica um rascunho, postando um tweet de anúncio público real (não totalmente reversível)
twitter_article_unpublishReverte um artigo publicado para rascunho (deixa o tweet de anúncio no ar)
twitter_article_deleteExclui um artigo (rascunho: exclusão definitiva; publicado: despublicar + excluir o tweet de anúncio), irreversível

Veja também twitter_article_get e twitter_article_list acima.

Monitoramento (entrega de novas postagens via webhook; gratuito, não medido)

Monitore uma conta X para novas postagens e receba-as no seu próprio endpoint HTTPS, assinado com HMAC, em vez de fazer polling. Registre um webhook primeiro, depois crie um monitor; cada nova postagem de um perfil monitorado é entregue a todos os webhooks ativos na sua conta (ou a um subconjunto restrito via webhook_ids). O CRUD de monitor/webhook é administração de conta, não uma leitura medida do Twitter, então todas as ferramentas abaixo são gratuitas.

FerramentaO que faz
twitter_monitor_createComeça a monitorar uma conta X (handle) para novas postagens
twitter_monitor_listLista todos os monitores na sua conta
twitter_monitor_updatePausa/retoma um monitor ou altera sua restrição de webhook_ids
twitter_monitor_deletePara e remove um monitor (irreversível)
twitter_monitor_healthStatus de um monitor, sinalizador de degradação, intervalo de polling, posição do cursor
twitter_monitor_account_healthResumo geral da conta: status do serviço, contagens de monitores ativos/pausados, contagens de resultados de entrega em 24h, em uma chamada
twitter_monitor_deliveriesEventos de entrega recentes em todos os monitores, com latência de detecção + entrega
twitter_x_user_stream_add_userDrop-in compatível para twitter_monitor_create usando um envelope no formato x_user_stream
twitter_x_user_stream_remove_userDrop-in compatível para twitter_monitor_delete usando um envelope no formato x_user_stream
twitter_x_user_stream_list_usersDrop-in compatível para twitter_monitor_list usando um envelope no formato x_user_stream
twitter_monitor_webhook_createRegistra uma URL de entrega HTTPS; retorna o segredo de assinatura HMAC uma vez
twitter_monitor_webhook_listLista todos os webhooks registrados na sua conta
twitter_monitor_webhook_deleteExclusão suave de um webhook por id (irreversível do lado do chamador)
twitter_monitor_webhook_testEnvia um evento de teste assinado para um webhook agora, de forma síncrona
twitter_monitor_webhook_redriveReproduz entregas que falharam enquanto seu endpoint estava fora do ar, do mais antigo para o mais recente

Feedback (relatar um bug ou uma lacuna para a equipe do twitterapis.com sem sair da sua sessão; gratuito)

Modelado na ferramenta de feedback do próprio Claude Code. Quando uma chamada falha de uma forma que não é sua chave, créditos, sessão ou limite de taxa, quando você pede algo que nenhuma ferramenta cobre, ou quando um resultado está claramente errado, o modelo pode rascunhar um relatório em uma fila local (~/.twitterapis/feedback-queue.json, no máximo 10 rascunhos, substitua o diretório com TWITTERAPIS_FEEDBACK_DIR). Nada é enviado até que você peça para revisar a fila e nomeie os rascunhos a enviar. Cada relatório carrega o endpoint, status e id de solicitação da última chamada com falha, seu nome de cliente e a versão deste pacote, para que a equipe possa agir sem acompanhamento. Use twitter_feedback_get com o id de servidor retornado para ver se foi triado, enviado ou recusado.

FerramentaO que faz
twitter_feedback_sendaction: "draft" (padrão) enfileira um relatório localmente e não envia nada; "list" mostra a fila; "send" posta apenas os rascunhos que você nomear para POST /feedback; "discard" os descarta
twitter_feedback_getLê o status de um relatório enviado (new, triaged, shipped, declined) e a resposta da equipe
twitter_feedback_listLista os relatórios que esta conta já enviou, do mais recente para o mais antigo, com filtros status/type e um cursor para paginar

Configuração de sessão

Vincule uma conta X à sua chave uma vez, para que as leituras e ações de gravação específicas da conta atuem como ela (ou passe auth_token/ct0 por chamada).

FerramentaO que faz
twitter_customer_sessionRegistra os cookies de sessão do seu x.com (auth_token + ct0) contra sua chave
twitter_customer_session_statusLê a sessão registrada sem alterá-la: conta resolvida, status ativo/inativo, timestamps e qual camada de egress uma gravação usaria. Nunca retorna os cookies. Gratuito
twitter_customer_session_deleteRevoga essa sessão armazenada, excluindo seu auth_token + ct0 do serviço. Idempotente e gratuito
twitter_user_loginFaz login com username + password (+ totp_secret para 2FA); armazena a sessão contra sua chave. Retorna uma confirmação, nunca os cookies

Playbooks e proveniência

Além das ferramentas, o servidor expõe recursos MCP. Um cliente os lista com resources/list e busca um com resources/read, então nada aqui custa contexto até que seja solicitado, e nada disso custa créditos.

Playbooks

Receitas curtas que um agente executa com as ferramentas acima.

URIO que cobre
playbook://launch-day-monitorMonitorar um lançamento em tempo quase real: configuração de monitor e webhook antes, contagens reais e amplificadores durante, perfis de amplificadores depois
playbook://competitor-follower-outreachTransformar os seguidores de outra conta em uma lista qualificada e depois contatá-los a partir da sua conta vinculada
playbook://account-auditUma leitura reproduzível de uma conta: identidade, mix de saída, alcance, engajamento e quais números compartilham uma janela de observação
playbook://link-x-accountA sequência de vinculação: leia o estado atual, escolha uma rota, o teto de tempo do login, os resultados que precisam de atenção no x.com e o que uma sessão desbloqueia
playbook://residential-egressControle de endereço de saída: os três lugares onde uma URL de proxy se anexa, o que uma URL precisa ser e como ler qual fonte está em vigor

Proveniência

provenance://tool/{tool_name} retorna, como JSON, de onde veio uma linha que você já possui: o endpoint REST e o método por trás dela, leitura ou gravação, se a chamada foi executada como sua conta X vinculada ou o pool de contas compartilhadas do serviço, o preço por chamada e a URL da documentação.

provenance://tool/twitter_advanced_search
{
  "tool": "twitter_advanced_search",
  "endpoint": "GET /twitter/tweet/advanced_search",
  "kind": "read",
  "destructive": false,
  "served_by": "the service's shared account pool",
  "cost": "$0.0008 per call",
  "docs": "https://docs.twitterapis.com/docs/reference/search/tweet-advanced-search"
}

Proveniência upstream em nível de linha (quando o serviço leu do X, se um cache upstream respondeu, qual conta leu) não está em nenhuma resposta que este pacote recebe, então está ausente em vez de adivinhado.

Chamadas bloqueadas respondem com os próximos passos

Uma chamada bloqueada por chave ausente, chave rejeitada, saldo vazio ou sessão X ausente retorna um payload estruturado (em structuredContent e anexado ao texto) com uma lista ordenada de steps, o que resolvê-la unlocks e, para o caso de sessão, o URI do playbook e os resultados que uma nova tentativa não pode corrigir.

Exemplos de uso

Pesquisar tweets de IA em alta

"Encontre os tweets mais populares sobre agentes de IA postados esta semana"

O agente chama twitter_advanced_search com:

query: "AI agents min_faves:200 since:2024-01-01"
product: "Top"
count: 20

Buscar postagens recentes de um usuário

"Pegue os últimos 10 tweets de @sama"

O agente chama twitter_user_tweets com:

username: "sama"
count: 10

Ler um thread completo

"Pegue o thread completo deste tweet: https://x.com/karpathy/status/1849....."

O agente chama twitter_tweet_thread com:

url: "https://x.com/karpathy/status/1849....."

Paginar pelos seguidores

"Liste os primeiros 100 seguidores de @openai, depois os próximos 100"

Primeira chamada, twitter_user_followers: { username: "openai", count: 100 } Segunda chamada, passe de volta o cursor da primeira resposta: { username: "openai", count: 100, cursor: "<cursor from response>" }

Paginação de twitter_user_tweets_complete

"Puxe todo o histórico de tweets de @elonmusk"

twitter_user_tweets_complete pagina automaticamente no lado do servidor e retorna um lote grande por chamada, mas não garante o histórico completo em uma chamada. Leia o resultado assim:

  • next_cursor é o sinal de conclusão, não count. Não-nulo significa que o histórico está truncado e há mais. Nulo significa que está genuinamente esgotado. A resposta também carrega has_more, o mesmo sinal como booleano.
  • max é um alvo mínimo, não um limite. As páginas chegam em blocos inteiros, então uma resposta pode conter até uma página (<=100) a mais do que o solicitado. Comportamento ao vivo: max=10 retornou 20, max=50 retornou 60, max=150 retornou 161, e omitir max (padrão do servidor 200) retornou 201. Nunca assuma count === max.
  • Cada chamada também tem um orçamento de tempo de parede no servidor, então uma resposta pode ser truncada mesmo quando retornou menos tweets do que o solicitado. Essa é a segunda razão pela qual count não pode dizer se você terminou.
  • A cobrança é fixa em $0,0024 por chamada, independentemente de quantos tweets retornem, então menos chamadas grandes custam menos do que muitas pequenas.

Para retomar, passe o next_cursor de volta diretamente como cursor e repita até que retorne nulo:

Primeira chamada, twitter_user_tweets_complete: { user_id: "44196397", max: 800 } Depois, enquanto next_cursor for não-nulo: { user_id: "44196397", max: 800, cursor: "<next_cursor from previous response>" }

Monitorar menções à marca

"Mostre-me tweets recentes mencionando @twitterapis"

O agente chama twitter_user_mentions com:

username: "twitterapis"
count: 50

Solução de problemas

HTTP 401 (invalid or missing API key) Verifique se TWITTERAPIS_KEY está definido corretamente na configuração do seu cliente MCP e corresponde à chave mostrada no seu dashboard.

HTTP 402 (insufficient credits) Recarregue em twitterapis.com/dashboard. Seus primeiros $0,50 são gratuitos no cadastro.

HTTP 403 (access forbidden) A conta ou o tweet pode ser privado/protegido, ou seu plano não inclui este endpoint.

HTTP 404 (not found) O usuário, tweet ou lista pode ter sido excluído, suspenso, ou o id/handle está errado.

HTTP 429 (rate limited) Aguarde alguns segundos e tente novamente. Se isso ocorrer com frequência, adicione "TWITTERAPIS_TIMEOUT_MS": "60000" à sua configuração de ambiente e espaçe as solicitações em massa.

Request failed: timed out after 30000ms O timeout padrão é de 30 s. Para buscas paginadas grandes, defina TWITTERAPIS_TIMEOUT_MS para um valor maior (ex.: 60000).

As ferramentas não aparecem no Claude / Cursor Garanta que npx esteja no seu PATH e que o Node.js 18+ esteja instalado (node --version). Verifique os logs do cliente MCP para erros de inicialização.

Preços

As chamadas são cobradas na sua conta twitterapis.com. A maioria dos endpoints custa $0,0008/chamada: quase todas as leituras (busca, perfis, tweets, seguidores, curtidas) além das ações simples de escrita (curtir, retweetar, salvar, seguir e seus desfazimentos, excluir). Na taxa de leitura, isso equivale a $0,04 por 1.000 tweets, já que cada chamada retorna cerca de 20 tweets. Os endpoints premium custam um pouco mais: criação de tweet, envio de DM (twitter_dm_send) e leituras de DM (twitter_dm_list, twitter_dm_conversation) a $0,0016/chamada, histórico completo de tweets (twitter_user_tweets_complete) a $0,0024/chamada, um thread completo de tweets (twitter_tweet_thread) e uma resposta Grok (twitter_grok_chat) a $0,004/chamada, e as escritas de edição de artigo (twitter_article_create, twitter_article_update_title, twitter_article_update_cover_media, twitter_article_update_content, twitter_article_publish, twitter_article_unpublish) a $0,0016. A superfície de composição custa $0,0016 para twitter_draft_create, twitter_draft_edit, twitter_scheduled_create e, observe, AMBAS AS LEITURAS DE LISTA (twitter_draft_list, twitter_scheduled_list), que são as duas leituras que não estão na taxa de leitura; twitter_draft_delete e twitter_scheduled_delete custam $0,0008/chamada, enquanto twitter_article_get, twitter_article_list e twitter_article_delete permanecem na taxa padrão de $0,0008/chamada. As três escritas de perfil (twitter_update_profile, twitter_update_avatar, twitter_update_banner) custam $0,0016/chamada cada. Seus primeiros $0,50 são gratuitos. Veja twitterapis.com/pricing. twitter_user_about_batch é cobrado por conta respondida, $0,0008 cada, então uma chamada com 100 contas custa até $0,08. twitter_check_follow_relationship_batch cobra $0,0008 por par respondido, e twitter_audience_summary cobra $0,0008 por página de amostra mais por conta amostrada respondida.

Links

FAQ

Preciso de uma conta de desenvolvedor X (Twitter)? Não. Obtenha uma chave de API em twitterapis.com/signup; não há etapa de aplicação ou aprovação.

É somente leitura? Não. 68 ferramentas de leitura funcionam apenas com sua chave de API; 44 ações de escrita (publicar, salvar ou agendar uma publicação, curtir, retweetar, seguir, DM, upload de mídia, atualizações de nome/bio/avatar/banner do perfil, criar lista/adicionar membro/remover membro, criar/editar/publicar/excluir artigo, criar/atualizar/excluir monitor/webhook, enviar feedback) atuam como uma conta X vinculada ou com credenciais inline por chamada, exceto CRUD de monitor/webhook e feedback, que são administração de conta e precisam apenas da sua chave de API.

Quais clientes são suportados? Claude Desktop, Cursor, Windsurf e VS Code (modo agente do Copilot), ou qualquer cliente Model Context Protocol.

Como é cobrado? Por requisição. Novas chaves começam com $0,50 em créditos gratuitos, sem necessidade de cartão. Veja preços.

Ele armazena minha chave ou dados? Não. O servidor não mantém estado e encaminha sua chave de API em cada chamada.

Mantenedores

src/tools.js é gerado. Não o edite. O catálogo é construído no momento da compilação a partir de duas entradas commitadas:

  • test/openapi.snapshot.json, uma cópia vendida da especificação OpenAPI publicada, que fornece a estrutura: quais endpoints existem, quais parâmetros cada um aceita, se um parâmetro é obrigatório e seu tipo.
  • scripts/tools.overrides.mjs, escrita à mão, que fornece tudo o que a especificação não pode expressar: as descrições de ferramentas e argumentos que um modelo lê para decidir como chamar uma ferramenta, as regras entre campos ("forneça exatamente um de username ou user_id"), os argumentos de credenciais por chamada que viajam como cabeçalhos x-*, e os sinalizadores de escrita / destrutiva / corpo JSON. A frase Cost: e o link Docs: de cada descrição são derivados da especificação.

As descrições declaram apenas fatos do produto: o que uma ferramenta retorna, recebe e custa. Elas nunca nomeiam outra ferramenta e nunca instruem o modelo; orientações sobre qual ferramenta usar quando, como a saída de uma ferramenta alimenta outra e quando redigir feedback vivem nas instruções do servidor (INSTRUCTIONS em src/server.js). test/description-compliance.mjs aplica isso em cada descrição de ferramenta e parâmetro que um cliente lista, tanto nos modos stdio quanto hospedado.

A especificação é vendida de propósito. Nada é buscado no momento da instalação ou na inicialização do servidor, então o pacote publicado é um artefato fixo, em vez de um que depende de um hostname ainda respondendo.

npm run openapi:refresh   # re-vendor the spec, prints the route diff
npm run build             # regenerate src/tools.js
npm test                  # gates, incl. "src/tools.js matches the generator"

npm test falha se src/tools.js foi editado à mão ou deixado desatualizado, se o catálogo e a especificação ao vivo discordarem, se a lista de ferramentas e este README discordarem, ou se uma descrição carregar uma instrução de modelo, o nome de outra ferramenta ou texto oculto (npm run check:description-compliance).

Licença

MIT