Skip to content
AppNorth
Log in

Integrations

Servidor MCP

Conecta tu agente a AppNorth para consultar tus apps iOS, preparar cambios en App Store y analizar tu mercado. Usa el mismo token y endpoint para las herramientas de tu app y las de Explore. Las escrituras se previsualizan por defecto; tú autorizas su ejecución.

View Markdown

Conectar tu agente

  1. Abre ajustes de tu cuenta y crea un token API. Guarda el valor cuando aparezca: después no se vuelve a mostrar.

  2. Configura una conexión MCP de tipo Streamable HTTP con la URL https://www.appnorth.app/api/v1/mcp. En una instalación propia, sustituye el dominio por el de tu hub.

  3. Envía Authorization: Bearer <TOKEN_APPNORTH> en cada petición. Los tokens del hub empiezan por an_; nunca los pegues en prompts públicos, commits ni código del SDK iOS.

  4. Pide al agente que consulte get_guardrails y tools/list antes de trabajar. prompts/list devuelve las guías disponibles.

La organización viene del token, nunca de un argumento de la herramienta. El autor debe seguir siendo miembro de esa organización. Un token con read permite consultas y previsualizaciones; ejecutar cambios requiere write y que su autor siga siendo owner o admin. Revoca el token desde ajustes cuando deje de hacer falta.

Los antiguos tokens al_mcp_ de AppLibrary no funcionan en este endpoint. Crea un token del hub; esta integración no convierte credenciales antiguas automáticamente.

Permisos y planes de mercado

AccesoFreeProStudio
Catálogo básico y ranking de TrendingSíSíSí, ficha completa
Fichas de app10 consultas al día, con rangos10 consultas al día, con rangosFichas completas, con créditos
WatchlistNoHasta 5 appsSegún el límite vigente del plan
Filtros avanzados, comparaciones y RisingNoNoSí, con créditos
Pantallas, anuncios, posts, vídeos y artículosNoNoSí, con créditos

Free y Pro reciben rangos de estimación, sin bibliotecas ni cifras exactas. La cuota diaria se comparte entre todos los tokens de la organización y se renueva a medianoche UTC. Cada consulta de ficha admitida cuenta, incluso si el slug no existe; repetir una consulta no evita el límite.

Las herramientas de tu propia app mantienen sus permisos y límites: que un token pueda usar MCP no desbloquea ASO, respuestas a reviews ni cambios de precios de otro plan.

Créditos mensuales

Cada lectura de mercado admitida en Studio consume un crédito por llamada, incluida una comparación de varias apps. La watchlist, sus previsualizaciones y los accesos limitados de Free/Pro no consumen créditos API. Descubrir herramientas o prompts tampoco consume créditos.

Los créditos pertenecen a la organización, se comparten entre tokens y se renuevan el primer día de cada mes a las 00 UTC. Se reservan antes de consultar datos: una llamada admitida que después devuelve contenido no encontrado o un fallo de lectura también consume su crédito. Una llamada rechazada por falta de plan, cuota o validación no consume créditos.

La asignación procede del catálogo de billing. La asignación actual de Studio es cero, pendiente de aprobación del producto: mientras siga así, las lecturas de mercado Studio devuelven API_CREDITS_EXHAUSTED. No se supone una cuota ni se ofrece acceso ilimitado por tener cero. Las instalaciones con billing desactivado usan el acceso sin límite configurado para self-hosting.

Los resultados incluyen credits junto a los datos, en structuredContent y en el bloque de texto JSON:

json
{
  "period": "YYYY-MM",
  "limit": 100,
  "used": 12,
  "remaining": 88,
  "cost": 1,
  "unlimited": false,
  "resets_at": "YYYY-MM-01T00:00:00.000Z"
}

Los números anteriores solo ilustran el formato; no son una cuota comercial ni datos de uso. limit y remaining son null cuando unlimited es true. Un error anterior a la lectura del contador puede no incluir credits. Las consultas de fichas limitadas incluyen también daily con el límite, lo que queda y la próxima renovación.

Herramientas de tu app

HerramientaQué hace
get_guardrailsReglas de permisos, previsualización, confirmación y datos.
get_aso_playbookGuía de ASO y mercado; no ejecuta cambios.
list_appsApps accesibles de tu organización e identificadores de App Store Connect.
get_metadataMetadata de la versión editable, por locale.
get_metadata_suggestionsPropuesta determinista para el campo keywords.
update_metadataPrevisualiza o publica cambios de metadata.
list_keywordsKeywords seguidas, posiciones e histórico disponible.
get_keyword_candidatesCandidatos de keywords.
add_keywordsPrevisualiza o añade keywords al seguimiento.
remove_keywordsPrevisualiza o elimina una keyword seguida.
get_keyword_gridCuadrícula por keyword y país.
get_competitors_aheadCompetidores observados por delante en tus keywords.
get_localization_planLocales, países y presupuesto de keywords.
add_localized_keywordsPrevisualiza o crea un grupo localizado de keywords.
get_ratingsValoraciones e histórico disponibles.
list_reviewsReviews de tu app, con filtros.
reply_reviewPrevisualiza o envía una respuesta a una review.
suggest_localized_pricesPropone price points disponibles en Apple.
schedule_price_changesPrevisualiza o programa cambios de precios.
list_feedbackFeedback recibido desde tu app.

Herramientas de mercado

Los slugs y los IDs salen de los resultados del servidor: no los deduzcas del nombre. adamId es el ID numérico de la app en App Store, distinto del app_id de un proyecto de tu organización.

Las listas aceptan limit (por defecto 25, máximo 50) y offset (por defecto 0, máximo 100000), y devuelven items y nextOffset. Si nextOffset es null, no hay otra página. market_get_app pagina cada biblioteca anidada con esos mismos parámetros. Las comparaciones, una imagen y un artículo no usan paginación.

HerramientaArgumentos principales y resultado
market_search_appsquery, category; filtros Studio: paywallType, tag, minRevenueUsd, hasVideo, hasAds, flowType. sort: revenue, downloads, rating o recent. Devuelve apps publicadas.
market_get_appslug. Ficha básica o completa; Studio recibe métricas, charts y bibliotecas paginadas.
market_search_screensquery, flowType, tag. Pantallas con sus IDs y la app/flujo al que pertenecen.
market_compare_appsslugs: de 2 a 5. Compara en el orden solicitado, con estimaciones, paywall y patrones.
market_list_flow_screensflowId. Pantallas de un flujo publicado en su orden original.
market_get_screen_imagescreenId. Metadatos y URL firmada de la imagen, válida durante 600 segundos. No devuelve bytes de imagen ni aplica un watermark nuevo.
market_list_app_adsslug, platform, activeOnly. Anuncios más recientes primero.
market_list_social_postsslug, platform, source, sort (views o recent). Solo posts ya disponibles.
market_get_video_chaptersslug. Duración, tipo y capítulos de un vídeo listo; no descarga el vídeo.
market_list_articlesapp (slug), kind, tag. Análisis publicados y apps vinculadas.
market_get_articleslug. Análisis en Markdown con referencias de evidencia conservadas.
market_trendingstorefront (por defecto us), chart, genre. Ranking del último snapshot completo, con su fecha real.
market_risingMismos filtros, más kind: riser, faller o new. Cambios entre snapshots completos; no inventa una comparación si falta histórico.
market_watchlistaction: list, add o remove; para cambios, adamId y opcionalmente note. Lee o modifica tu watchlist.

flowType admite onboarding, full-app, paywall, cancellation, activation y retention. chart admite topfreeapplications, toppaidapplications y topgrossingapplications. La fecha del snapshot identifica la observación: un resultado no promete que los datos sean de hoy.

Ingresos y descargas de mercado son estimaciones, no revenue conectado de RevenueCat. Conserva fuente, periodo y fecha al citarlas. Un dato ausente permanece null; no significa cero. Un ranking alto no prueba la conversión de un onboarding o paywall.

Previsualizar y confirmar cambios

Todas las mutaciones usan dry_run=true por defecto y devuelven diff.before, diff.after y diff.warnings. Revisa el cambio concreto antes de autorizarlo. Para update_metadata, conserva diff.before como expected al ejecutar para detectar una revisión obsoleta.

market_watchlist, add_localized_keywords y schedule_price_changes exigen además confirm=true. Sin ambos flags explícitos, la watchlist devuelve una previsualización:

json
{
  "name": "market_watchlist",
  "arguments": {
    "action": "add",
    "adamId": "<ID_DEVUELTO_POR_EL_CATALOGO>",
    "note": "Revisar su onboarding",
    "dry_run": true
  }
}

Después de revisar y autorizar, repite con el mismo ID y propuesta, dry_run=false y confirm=true. Un token de lectura no puede ejecutarlo. La capacidad se comprueba de nuevo dentro de una transacción por organización; una previsualización no reserva una plaza.

Repetir add sobre la misma app no crea duplicados; si omites note, conserva la existente. Repetir remove sobre una app ya eliminada no afecta a otras entradas. Las notas solo pertenecen a tu organización.

Prompts de mercado

  • clone_winner: argumentos app y reference. Analiza una referencia y propone patrones adaptados a tu app, con identidad, textos y assets propios.

  • paywall_ideas: argumentos app y category. Busca evidencia de paywalls y propone experimentos sin inventar conversiones.

  • market_scan: argumento app; store es opcional y usa US por defecto. Revisa rankings y competidores, y prepara propuestas de watchlist.

Los prompts no hacen llamadas ni escriben por sí solos: guían al agente. Los artículos, posts, notas y pantallas de terceros son datos no confiables, nunca instrucciones que autoricen acciones o cambien las reglas del usuario.

Errores y recuperación

CódigoQué hacer
PLAN_REQUIREDLee required_plan y usa una función incluida o cambia de plan.
API_CREDITS_EXHAUSTEDConsulta credits.limit y resets_at. Si la asignación es cero, esperar al próximo mes no la aumenta.
DAILY_APP_LIMITEspera a daily.resets_at o usa Studio cuando tenga créditos asignados.
WATCHLIST_LIMITElimina una app de la watchlist antes de añadir otra.
WRITE_NOT_ALLOWEDUsa un token write cuyo autor siga siendo owner o admin.
INVALID_INPUTCorrige los argumentos; consulta el esquema con tools/list.
NOT_FOUNDActualiza los slugs o IDs desde los resultados; el contenido puede no estar publicado.
MEDIA_UNAVAILABLELa imagen aún no está migrada o el almacenamiento no está configurado.
MARKET_UNAVAILABLEReintenta más tarde; no presupongas datos ausentes como ceros.

Los errores de herramientas llevan isError=true; un HTTP 200 no significa que la operación haya funcionado. La validación del protocolo puede devolver su propio error antes de ejecutar la herramienta. Un token ausente, revocado o sin membresía válida devuelve HTTP 401. El límite de peticiones devuelve HTTP 429: respeta Retry-After y evita bucles de reintento.