AppSkyline MCP
Realiza un seguimiento de los rankings de palabras clave en la tienda de aplicaciones, el historial de posiciones, los metadatos de los listados, la interacción, las reseñas y los competidores en iOS, macOS, Google Play y Microsoft Store.
Documentación
Impulsa el seguimiento de rankings de tu app store desde tu propio código: una API REST con claves de alcance limitado y límites de tasa por clave sobre las apps y términos de búsqueda que rastreas en iOS App Store, Google Play y Microsoft Store, además de webhooks firmados cuando algo cambia.
Claves de API
Obtén una clave y autentícate
La API REST de AppSkyline permite que tu propio backend trabaje con lo que muestra el panel: las apps que tu organización rastrea, los términos de búsqueda rastreados para cada una en iOS App Store, Google Play y Microsoft Store, y las filas de engagement de la tienda detrás de las páginas de estadísticas.
Abre el panel de AppSkyline y crea una clave de API en la sección API keys. El secreto se muestra una sola vez, cuando se crea la clave, y nunca más — guárdalo en un lugar seguro. Una clave pertenece a una sola organización, por lo que la organización está implícita en la clave y nunca es necesario enviarla.
Autentica cada solicitud con autenticación básica HTTP que lleve solo el secreto de la clave, codificado en base64, en el encabezado 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)
Cada endpoint vive bajo https://api.appskyline.com. Las solicitudes realizadas con una clave tienen límite de tasa por clave; superar el límite devuelve 429.
Inicio rápido
Tus primeras tres llamadas
Lista tus apps rastreadas, comienza a rastrear un nuevo término de búsqueda para una de ellas y luego lee los términos rastreados para esa 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)"
Explora la referencia completa de la API — cada endpoint con sus parámetros, cuerpo de solicitud, respuestas y alcance requerido.
CLI
Interfaz de línea de comandos
Las mismas apps, palabras clave y rankings están disponibles desde tu terminal a través del CLI de appskyline. Instálalo globalmente con npm, o ejecútalo ad hoc con npx.
La autenticación es un solo comando: appskyline login abre tu navegador para iniciar sesión en tu cuenta de AppSkyline y guarda una sesión para comandos posteriores — sin necesidad de pegar una clave 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"
El CLI es de código abierto en github.com/appskyline/cli y se publica como appskyline en npm. Ejecuta cualquier comando con --help para ver sus opciones.
Conector de Claude
Usa AppSkyline desde Claude
Conecta AppSkyline a Claude para preguntar sobre las apps que tu organización rastrea, los términos de búsqueda que monitoreas y sus rankings actuales en la tienda. El conector usa tu cuenta de AppSkyline, por lo que Claude solo puede acceder a la organización que autorices.
En Claude, abre Configuración, elige Conectores y luego agrega un conector personalizado con la URL a continuación. Claude te envía a AppSkyline para iniciar sesión y aprobar el acceso. Después de conectar, haz una pregunta en lenguaje natural como "¿Cuál es nuestro ranking actual para restaurant POS en iOS App Store en 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."
El conector tiene herramientas separadas de lectura y escritura. Claude identifica los cambios antes de realizarlos, mientras que las consultas de ranking pueden mostrar un resultado compacto en línea con la app, tienda, país, palabra clave y posición actual.
Necesitas una cuenta de AppSkyline con acceso a al menos una app rastreada. Para eliminar el acceso más tarde, desconecta AppSkyline en Claude o revoca la conexión desde tu cuenta de AppSkyline.
Otros clientes MCP
Usa AppSkyline desde cualquier cliente MCP
AppSkyline habla el Protocolo de Contexto de Modelo (MCP) sobre HTTP transmisible, por lo que funciona con cualquier cliente que admita servidores MCP remotos — no solo Claude. No hay nada que instalar ni clave de API que pegar: apunta el cliente a la URL a continuación e inicia sesión en AppSkyline cuando lo solicite.
# 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 también es un servidor MCP App que implementa la extensión estándar io.modelcontextprotocol/ui. La herramienta show_app_overview renderiza ui://appskyline/app-overview-v13.html, y los resultados de keyword-rank renderizan ui://appskyline/keyword-rank-v6.html. Ambos recursos usan text/html;profile=mcp-app, declaran una Política de Seguridad de Contenido en línea restrictiva limitada a los orígenes MCP y del host, y admiten esquemas de color claro/oscuro en hosts compatibles, incluidos Claude y ChatGPT.
La autenticación usa OAuth 2.0 con registro dinámico de clientes y PKCE, lo que significa que los clientes se registran solos — nunca copias un ID de cliente o secreto. Los clientes que solo admiten servidores locales pueden hacer un puente al endpoint remoto con mcp-remote.
AppSkyline inicia sesión a través del mismo servidor de autorización que nuestros otros productos, por lo que la pantalla de aprobación puede listar alcances para productos más allá de AppSkyline. El acceso está vinculado al producto que conectaste: un token emitido para AppSkyline solo es aceptado por AppSkyline, y puedes revocarlo en cualquier momento desde tu cuenta.
Documentación MCP
Busca documentación de AppSkyline desde cualquier agente
AppSkyline publica un endpoint MCP público separado, de solo lectura, para documentación. Busca y lee la descripción general canónica del producto, la guía de desarrollador, la API REST, la autenticación, los precios y el Markdown de privacidad sin acceder a una organización ni requerir una cuenta.
# 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
Usa search_appskyline_documentation cuando no sepas qué página responde la pregunta, y luego usa get_appskyline_documentation para la fuente completa citada. Las acciones de producto y los datos privados de ranking permanecen en el servidor MCP de AppSkyline protegido por OAuth.
Plugins de agente
Instala AppSkyline como un plugin portátil
El estándar abierto Agent Plugins empaqueta el servidor MCP de AppSkyline y su habilidad de investigación ASO juntos. Instala un repositorio y tu agente aprende el flujo de trabajo, se conecta a las herramientas remotas y te envía a través del mismo flujo de aprobación OAuth de AppSkyline — sin clave de API ni secreto de cliente incluido en el 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
El repositorio incluye los manifiestos portátiles plugin.json y mcp.json, además de adaptadores nativos para Claude, Gemini CLI y Google Antigravity. El paquete portátil también es el artefacto de envío para Kiro Powers, el Cursor Marketplace y Awesome Copilot.
Los agentes y registros pueden descubrir el mismo paquete desde el manifiesto bien conocido de Agent Plugin o desde el Catálogo de IA de AppSkyline.
Habilidades de agente
Enseña a tu agente de codificación AppSkyline
AppSkyline incluye Agent Skills — guías que siguen el estándar agentskills.io que enseñan a los agentes de codificación cómo ejecutar investigación ASO con el CLI de appskyline y el conector MCP, en lugar de adivinar comandos y herramientas.
# Install the AppSkyline skills into your coding agent
npx skills add appskyline/skills
Un solo comando instala las habilidades en Claude Code, Cursor, Codex, Gemini CLI y cualquier otro agente que siga el estándar de Skills. El CLI también incluye las mismas guías, con versiones coincidentes con los comandos que envía: appskyline skills get <name> imprime una bajo demanda.
Las habilidades son de código abierto en github.com/appskyline/skills. Los usuarios de Claude también pueden instalar el plugin de Claude de AppSkyline, que incluye el conector junto con las habilidades: github.com/appskyline/claude-plugin.
Alcances
Privilegio mínimo por defecto
Cada clave lleva una lista de alcances, por lo que una integración que solo necesita leer tus rankings nunca obtiene la capacidad de cambiar lo que se rastrea. Las claves nuevas comienzan como solo lectura; amplíalas explícitamente en el panel. Una solicitud cuya clave no tenga el alcance que requiere un endpoint se rechaza con 403.
- apps:readLista las apps de tu organización y lee una por id.
- apps:writeCrea y actualiza apps.
- keywords:readLista los términos de búsqueda rastreados y lee uno por id.
- keywords:writeCrea, actualiza y elimina términos de búsqueda rastreados.
- stats:readLee las filas de engagement de la tienda para tus apps.
Webhooks
Webhooks firmados
Agrega una suscripción de webhook a tu organización y AppSkyline envía por POST los eventos que elijas a tu servidor a medida que ocurren.
- app.createdSe agregó una app al seguimiento.
- app.updatedSe editó una app.
- keyword.createdUn término de búsqueda comenzó a rastrearse para una app.
- keyword.updatedSe editó un término de búsqueda rastreado.
- keyword.deletedSe eliminó un término de búsqueda rastreado.
POST https://your-server.com/appskyline-webhook
{
"event": "keyword.created",
"timestamp": 1719000000,
"data": { "...": "..." }
}
Verifica la firma
Cada entrega lleva un encabezado X-Appskyline-Signature de la forma t=timestamp,v1=firma, donde la firma es un HMAC-SHA256 de timestamp.cuerpo con la clave del secreto de suscripción que se te mostró una vez cuando se creó la suscripción. Recalcúlalo sobre el cuerpo sin procesar y compara antes de confiar en el 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))
}
La entrega es un solo intento de mejor esfuerzo con un tiempo de espera de cinco segundos y sin reintentos, por lo que responde 2xx rápidamente y haz el trabajo de forma asíncrona. Un endpoint que falla veinte veces seguidas se desactiva automáticamente y debe reactivarse en el panel.