AppSkyline MCP
Acompanhe rankings de palavras-chave na app store, histórico de posições, metadados de listagem, engajamento, avaliações e concorrentes em iOS, macOS, Google Play e Microsoft Store.
Documentação
Drive seu rank tracking na app store a partir do seu próprio código: uma API REST com chaves de escopo e limites de taxa por chave sobre os apps e termos de busca que você acompanha na iOS App Store, Google Play e Microsoft Store, além de webhooks assinados quando algo muda.
Chaves de API
Obtenha uma chave e autentique-se
A API REST do AppSkyline permite que seu backend trabalhe com o que o painel mostra: os apps que sua organização acompanha, os termos de busca monitorados para cada um deles na iOS App Store, Google Play e Microsoft Store, e as linhas de engajamento da loja por trás das páginas de estatísticas.
Abra o painel do AppSkyline e crie uma chave de API em API keys. O segredo é exibido apenas uma vez, quando a chave é criada, e nunca mais — guarde-o em um local seguro. Uma chave pertence a uma única organização, então a organização está implícita na chave e nunca precisa ser enviada.
Autentique cada requisição com autenticação HTTP Basic carregando apenas o segredo da chave, codificado em base64, no cabeçalho Authorization.
# The Authorization header is HTTP Basic auth carrying only the key secret,
# with no username and no colon.
Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)
Todo endpoint vive sob https://api.appskyline.com. Requisições feitas com uma chave são limitadas por chave; exceder o limite retorna 429.
Início rápido
Suas três primeiras chamadas
Liste seus apps monitorados, comece a monitorar um novo termo de busca para um deles e, em seguida, leia os termos monitorados para esse app.
# List the apps your organization tracks
curl https://api.appskyline.com/api/apps \
-H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)"
# Track a new search term for one of them. country is a two-letter ISO code and
# language a two-letter ISO code; the pair is the storefront the term is
# ranked in.
curl -X POST https://api.appskyline.com/api/keywords \
-H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)" \
-H "Content-Type: application/json" \
-d '{
"appId": "APP_ID",
"searchTerms": "dental practice software",
"country": "us",
"language": "en"
}'
# Read back the terms tracked for that app
curl "https://api.appskyline.com/api/keywords?appId=APP_ID&limit=50" \
-H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)"
Explore a referência completa da API — cada endpoint com seus parâmetros, corpo da requisição, respostas e escopo necessário.
CLI
Interface de linha de comando
Os mesmos apps, palavras-chave e rankings estão disponíveis no seu terminal através do CLI appskyline. Instale-o globalmente com npm, ou execute-o ad hoc com npx.
A autenticação é um único comando: appskyline login abre seu navegador para entrar na sua conta AppSkyline e armazena uma sessão para comandos futuros — sem necessidade de colar chave de API.
# Install once, globally
npm install -g appskyline
# or run it ad hoc without installing
npx appskyline --help
# Log in — opens your browser to sign in and stores a session
appskyline login
# List the apps your organization tracks
appskyline apps list
# Where does your app rank right now for a term?
appskyline rank APP_ID --store ios-app-store --term "dental practice software" --country US
# Live top-10 results for a term on a store
appskyline search ios-app-store --term "dental practice software" --country US
# Search volume, CPC and difficulty for keyword ideas
appskyline keywords overview --country US --terms "dental software,dentist app"
O CLI é open source em github.com/appskyline/cli e publicado como appskyline no npm. Execute qualquer comando com --help para ver suas opções.
Conector Claude
Use AppSkyline a partir do Claude
Conecte o AppSkyline ao Claude para perguntar sobre os apps que sua organização acompanha, os termos de busca que você monitora e seus rankings atuais na loja. O conector usa sua conta AppSkyline, então o Claude só pode acessar a organização que você autorizar.
No Claude, abra Configurações, escolha Conectores e adicione um conector personalizado com a URL abaixo. O Claude envia você ao AppSkyline para entrar e aprovar o acesso. Após conectar, faça uma pergunta em linguagem natural como "Qual é o nosso ranking atual para restaurant POS na iOS App Store nos Estados Unidos?"
# In Claude: Settings > Connectors > Add custom connector
# Connector URL
https://mcp.appskyline.com/mcp
# Then sign in to your AppSkyline account when Claude asks you to connect.
# Example prompt: "Show the current App Store rank for one of my apps."
O conector tem ferramentas separadas de leitura e escrita. O Claude identifica mudanças antes de executá-las, enquanto consultas de ranking podem renderizar um resultado inline compacto com o app, loja, país, palavra-chave e posição atual.
Você precisa de uma conta AppSkyline com acesso a pelo menos um app monitorado. Para remover o acesso depois, desconecte o AppSkyline no Claude ou revogue a conexão na sua conta AppSkyline.
Outros clientes MCP
Use AppSkyline a partir de qualquer cliente MCP
O AppSkyline fala o Model Context Protocol sobre HTTP transmissível, então funciona com qualquer cliente que suporte servidores MCP remotos — não apenas o Claude. Não há nada para instalar e nenhuma chave de API para colar: aponte o cliente para a URL abaixo e entre no AppSkyline quando solicitado.
# Any MCP client that supports remote servers uses the same URL:
https://mcp.appskyline.com/mcp
# Codex CLI
codex mcp add appskyline --url https://mcp.appskyline.com/mcp
codex mcp login appskyline
# VS Code
code --add-mcp '{"name":"appskyline","type":"http","url":"https://mcp.appskyline.com/mcp"}'
# Cursor, Windsurf and other editors: add to their MCP config file
{
"mcpServers": {
"appskyline": {
"type": "http",
"url": "https://mcp.appskyline.com/mcp"
}
}
}
# Clients that only support local (stdio) servers can bridge:
npx mcp-remote https://mcp.appskyline.com/mcp
Este também é um servidor MCP App que implementa a extensão padrão io.modelcontextprotocol/ui. A ferramenta show_app_overview renderiza ui://appskyline/app-overview-v13.html, e resultados de rank de palavra-chave renderizam ui://appskyline/keyword-rank-v6.html. Ambos os recursos usam text/html;profile=mcp-app, declaram uma Política de Segurança de Conteúdo inline restritiva limitada às origens MCP e do host, e suportam esquemas de cores claro/escuro em hosts compatíveis, incluindo Claude e ChatGPT.
A autenticação usa OAuth 2.0 com registro dinâmico de cliente e PKCE, o que significa que os clientes se registram sozinhos — você nunca copia um ID de cliente ou segredo. Clientes que só suportam servidores locais podem fazer a ponte para o endpoint remoto com mcp-remote.
O AppSkyline faz login através do mesmo servidor de autorização que nossos outros produtos, então a tela de aprovação pode listar escopos para produtos além do AppSkyline. O acesso é fixado ao produto que você conectou: um token emitido para o AppSkyline só é aceito pelo AppSkyline, e você pode revogá-lo a qualquer momento na sua conta.
Documentação MCP
Pesquise a documentação do AppSkyline a partir de qualquer agente
O AppSkyline publica um endpoint MCP separado, público e somente leitura para documentação. Ele pesquisa e lê a visão geral canônica do produto, guia do desenvolvedor, API REST, autenticação, preços e Markdown de privacidade sem acessar uma organização ou exigir uma conta.
# Public read-only documentation server
https://mcp.appskyline.com/docs-mcp
# No AppSkyline account or OAuth token is required.
# Available tools: search_appskyline_documentation and get_appskyline_documentation
Use search_appskyline_documentation quando você não souber qual página responde à pergunta e, em seguida, use get_appskyline_documentation para a fonte citada completa. Ações de produto e dados privados de ranking permanecem no servidor MCP AppSkyline protegido por OAuth.
Plugins de Agente
Instale o AppSkyline como um plugin portátil
O padrão aberto Agent Plugins empacota o servidor MCP AppSkyline e sua habilidade de pesquisa ASO juntos. Instale um repositório e seu agente aprende o fluxo de trabalho, conecta-se às ferramentas remotas e envia você pelo mesmo fluxo de aprovação OAuth do AppSkyline — nenhuma chave de API ou segredo de cliente está incluído no plugin.
# Portable Agent Plugins package (Kiro, Cursor, Copilot-compatible hosts)
https://github.com/appskyline/claude-plugin
# Gemini CLI
gemini extensions install https://github.com/appskyline/claude-plugin
# Google Antigravity uses its native adapter from the same repository
git clone https://github.com/appskyline/claude-plugin.git
agy plugin install ./claude-plugin/com.google.antigravity
O repositório inclui os manifestos portáteis plugin.json e mcp.json, além de adaptadores nativos para Claude, Gemini CLI e Google Antigravity. O pacote portátil também é o artefato de submissão para Kiro Powers, Cursor Marketplace e Awesome Copilot.
Agentes e registros podem descobrir o mesmo pacote a partir do manifesto well-known Agent Plugin ou do AI Catalog do AppSkyline.
Habilidades de Agente
Ensine seu agente de codificação sobre o AppSkyline
O AppSkyline inclui Agent Skills — guias que seguem o padrão agentskills.io e ensinam agentes de codificação a executar pesquisa ASO com o CLI appskyline e o conector MCP, em vez de adivinhar comandos e ferramentas.
# Install the AppSkyline skills into your coding agent
npx skills add appskyline/skills
Um único comando instala as habilidades no Claude Code, Cursor, Codex, Gemini CLI e qualquer outro agente que siga o padrão Skills. O CLI também inclui os mesmos guias, com versão correspondente aos comandos que ele fornece: appskyline skills get <name> imprime um sob demanda.
As habilidades são open source em github.com/appskyline/skills. Usuários do Claude também podem instalar o plugin AppSkyline Claude, que combina o conector com as habilidades: github.com/appskyline/claude-plugin.
Escopos
Menor privilégio por padrão
Cada chave carrega uma lista de escopos, então uma integração que só precisa ler seus rankings nunca obtém a capacidade de alterar o que é monitorado. Novas chaves começam somente leitura; amplie-as explicitamente no painel. Uma requisição cuja chave não tenha o escopo que um endpoint exige é recusada com 403.
- apps:readListe os apps da sua organização e leia um por id.
- apps:writeCrie e atualize apps.
- keywords:readListe termos de busca monitorados e leia um por id.
- keywords:writeCrie, atualize e exclua termos de busca monitorados.
- stats:readLeia linhas de engajamento da loja para seus apps.
Webhooks
Webhooks assinados
Adicione uma assinatura de webhook à sua organização e o AppSkyline envia por POST os eventos que você escolheu para o seu servidor conforme eles acontecem.
- app.createdUm app foi adicionado ao monitoramento.
- app.updatedUm app foi editado.
- keyword.createdUm termo de busca começou a ser monitorado para um app.
- keyword.updatedUm termo de busca monitorado foi editado.
- keyword.deletedUm termo de busca monitorado foi removido.
POST https://your-server.com/appskyline-webhook
{
"event": "keyword.created",
"timestamp": 1719000000,
"data": { "...": "..." }
}
Verifique a assinatura
Cada entrega carrega um cabeçalho X-Appskyline-Signature no formato t=timestamp,v1=assinatura, onde a assinatura é um HMAC-SHA256 de timestamp.corpo com chave no segredo da assinatura mostrado a você uma vez quando a assinatura foi criada. Recalcule-o sobre o corpo bruto e compare antes de confiar no payload.
import crypto from 'node:crypto'
// body must be the RAW request body, byte for byte
function verify(header, body, secret) {
const [t, v1] = (header || '').split(',').map(part => part.split('=')[1])
if (!t || !v1) return false
const expected = crypto
.createHmac('sha256', secret)
.update(\`${t}.${body}\`)
.digest('hex')
// timingSafeEqual throws on a length mismatch, so a malformed signature
// has to be rejected before the comparison rather than by it.
if (v1.length !== expected.length) return false
return crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected))
}
A entrega é uma única tentativa de melhor esforço com timeout de cinco segundos e sem novas tentativas, então responda 2xx rapidamente e faça o trabalho de forma assíncrona. Um endpoint que falha vinte vezes seguidas é desabilitado automaticamente e precisa ser reabilitado no painel.