tryastro-mcp 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +2 -2
  2. package/package.json +3 -2
  3. package/server.js +38 -59
package/README.md CHANGED
@@ -45,7 +45,7 @@ Use the published npm package:
45
45
  "mcpServers": {
46
46
  "tryastro-mcp": {
47
47
  "command": "npx",
48
- "args": ["-y", "tryastro-mcp@0.2.1"]
48
+ "args": ["-y", "tryastro-mcp@0.2.3"]
49
49
  }
50
50
  }
51
51
  }
@@ -56,7 +56,7 @@ Use the published npm package:
56
56
  1. Update `version` in `/package.json`.
57
57
  2. Login: `npm login`.
58
58
  3. Publish: `npm publish --access public`.
59
- 4. Verify install: `npx -y tryastro-mcp@0.2.1`.
59
+ 4. Verify install: `npx -y tryastro-mcp@0.2.3`.
60
60
 
61
61
  ## Data and source model
62
62
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tryastro-mcp",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "MCP server for TryAstro scenarios and standard support requests",
5
5
  "type": "module",
6
6
  "main": "server.js",
@@ -13,7 +13,8 @@
13
13
  "app-store-optimization"
14
14
  ],
15
15
  "bin": {
16
- "tryastro-mcp": "./bin/astro-mcp.js"
16
+ "tryastro-mcp": "./bin/astro-mcp.js",
17
+ "astro-mcp": "./bin/astro-mcp.js"
17
18
  },
18
19
  "exports": {
19
20
  ".": "./server.js"
package/server.js CHANGED
@@ -7,7 +7,7 @@ import { fileURLToPath } from "node:url";
7
7
  function loadServerInfo() {
8
8
  const fallback = {
9
9
  name: "tryastro-mcp",
10
- version: "0.2.1",
10
+ version: "0.2.3",
11
11
  };
12
12
 
13
13
  try {
@@ -56,119 +56,98 @@ const STANDARD_TOPICS = [
56
56
  {
57
57
  id: "capabilities",
58
58
  title: "Product capabilities",
59
- patterns: [
60
- /what can .*astro|feature|capabilit|возможност|что умеет/i,
61
- /keyword|competitor|localization|rankings|ratings|review/i,
62
- ],
59
+ patterns: [/what can .*astro|feature|capabilit/i, /keyword|competitor|localization|rankings|ratings|review/i],
63
60
  answerRu:
64
- "Astro фокусируется на ASO-операциях: поиск ключевых слов, анализ конкурентов, локализации, мониторинг позиций, мониторинг рейтинга и отзывов, а также импорт/экспорт ASO-данных.",
61
+ "Astro is focused on ASO operations: keyword research, competitor analysis, localization workflows, keyword ranking monitoring, ratings/reviews monitoring, and ASO data import/export.",
65
62
  answerEn:
66
63
  "Astro is focused on ASO operations: keyword research, competitor analysis, localization workflows, keyword ranking monitoring, ratings/reviews monitoring, and ASO data import/export.",
67
64
  next: [
68
- "Выберите сценарий через scenario_catalog и запустите соответствующий scenario tool.",
69
- "Зафиксируйте список целевых стран/языков до старта keyword и localization сценариев.",
65
+ "Select a scenario through scenario_catalog and run the matching scenario tool.",
66
+ "Lock the target countries and locales before starting keyword and localization workflows.",
70
67
  ],
71
68
  sources: [SOURCES.homepage, SOURCES.docs],
72
69
  },
73
70
  {
74
71
  id: "pricing_billing",
75
72
  title: "Pricing and billing",
76
- patterns: [
77
- /pricing|price|cost|billing|subscription|подписк|тариф|цена|стоимост/i,
78
- /refund|возврат|renew|продлен/i,
79
- ],
73
+ patterns: [/pricing|price|cost|billing|subscription/i, /refund|renew/i],
80
74
  answerRu:
81
- "На сайте указан единый annual-план: $108 в год (приблизительно $9/месяц). Политика возврата: 14 дней с момента покупки через запрос на hello@tryastro.app. Биллинг обрабатывается через Lemon Squeezy.",
75
+ "The site shows a single annual plan: $108/year (about $9/month). Refund policy: 14 days from purchase via hello@tryastro.app. Billing is handled via Lemon Squeezy.",
82
76
  answerEn:
83
77
  "The site shows a single annual plan: $108/year (about $9/month). Refund policy: 14 days from purchase via hello@tryastro.app. Billing is handled via Lemon Squeezy.",
84
78
  next: [
85
- "Для актуальной суммы и валюты проверяйте pricing page перед оплатой.",
86
- "Для возврата отправьте email с данными покупки в течение 14 дней.",
79
+ "Check the pricing page before payment for the latest amount and currency.",
80
+ "For a refund, send purchase details by email within the 14-day window.",
87
81
  ],
88
82
  sources: [SOURCES.pricing, SOURCES.terms],
89
83
  },
90
84
  {
91
85
  id: "platform_coverage",
92
86
  title: "Platform and geo coverage",
93
- patterns: [
94
- /platform|device|ios|ipados|macos|visionos|store|country|geo|регион|страны|поддержк/i,
95
- /apple search ads|stores/i,
96
- ],
87
+ patterns: [/platform|device|ios|ipados|macos|visionos|store|country|geo/i, /apple search ads|stores/i],
97
88
  answerRu:
98
- "Astro доступен на iOS, iPadOS, macOS и VisionOS, требует macOS 14+ для desktop. В коммуникации продукта фигурируют 60+ стран для Apple Search Ads и поддержка работы с 91 стором в keyword search.",
89
+ "Astro is available on iOS, iPadOS, macOS, and VisionOS, with macOS 14+ required for desktop. Product messaging mentions 60+ Apple Search Ads countries and support for 91 stores in keyword search.",
99
90
  answerEn:
100
91
  "Astro is available on iOS, iPadOS, macOS, and VisionOS, with macOS 14+ required for desktop. Product messaging mentions 60+ Apple Search Ads countries and support for 91 stores in keyword search.",
101
92
  next: [
102
- "Перед запуском сценариев зафиксируйте целевые сторы и локали в одном документе.",
103
- "Если есть расхождения по охвату, сверяйте docs и приложение одновременно.",
93
+ "Capture target stores and locales in one document before running scenarios.",
94
+ "If coverage details differ, cross-check both docs and the app.",
104
95
  ],
105
96
  sources: [SOURCES.homepage, SOURCES.firstAccess],
106
97
  },
107
98
  {
108
99
  id: "privacy_legal",
109
100
  title: "Privacy and legal",
110
- patterns: [
111
- /privacy|gdpr|legal|terms|dpa|subprocessor|данные|персональ|политик|услови/i,
112
- /security|безопас/i,
113
- ],
101
+ patterns: [/privacy|gdpr|legal|terms|dpa|subprocessor/i, /security/i],
114
102
  answerRu:
115
- "Согласно Privacy page, пользовательские данные хранятся локально на устройстве, а Astro по умолчанию не передает их на свои серверы. Юридические условия и ограничения использования описаны в Terms.",
103
+ "According to the Privacy page, user data is stored locally on the device and Astro does not send it to Astro servers by default. Legal terms and usage restrictions are defined in Terms.",
116
104
  answerEn:
117
105
  "According to the Privacy page, user data is stored locally on the device and Astro does not send it to Astro servers by default. Legal terms and usage restrictions are defined in Terms.",
118
106
  next: [
119
- "Для комплаенса проверьте DPA/Sub-processors ссылки в футере перед закупкой.",
120
- "Для юридических вопросов эскалируйте на hello@tryastro.app.",
107
+ "For compliance checks, review DPA/Sub-processors links in the footer before purchase.",
108
+ "For legal questions, escalate to hello@tryastro.app.",
121
109
  ],
122
110
  sources: [SOURCES.privacy, SOURCES.terms],
123
111
  },
124
112
  {
125
113
  id: "support_feedback",
126
114
  title: "Support and feedback",
127
- patterns: [
128
- /support|help|ticket|contact|feedback|roadmap|баг|поддержк|тикет|контакт/i,
129
- /hello@tryastro\.app/i,
130
- ],
115
+ patterns: [/support|help|ticket|contact|feedback|roadmap/i, /hello@tryastro\.app/i],
131
116
  answerRu:
132
- "Базовые материалы доступны в docs.tryastro.app. Для запросов по подписке и возвратам используется hello@tryastro.app. На сайте также отмечены каналы feature requests и support ticket.",
117
+ "Core documentation is available at docs.tryastro.app. For subscription and refund requests, use hello@tryastro.app. The site also mentions feature requests and support ticket channels.",
133
118
  answerEn:
134
119
  "Core documentation is available at docs.tryastro.app. For subscription and refund requests, use hello@tryastro.app. The site also mentions feature requests and support ticket channels.",
135
120
  next: [
136
- "В тикете прикладывайте точный store/country/date диапазон и скриншоты.",
137
- "Для продуктовых запросов сначала проверьте docs, потом отправляйте gap в feature request.",
121
+ "Include exact store/country/date range and screenshots in support tickets.",
122
+ "For product requests, check docs first and then submit the gap as a feature request.",
138
123
  ],
139
124
  sources: [SOURCES.docs, SOURCES.homepage, SOURCES.terms],
140
125
  },
141
126
  {
142
127
  id: "migration_transfer",
143
128
  title: "Migration and transfer",
144
- patterns: [
145
- /import|export|migration|transfer|switch|перенос|миграц|импорт|экспорт|лиценз/i,
146
- /apptweak|sensor tower|mobile action|appfollow/i,
147
- ],
129
+ patterns: [/import|export|migration|transfer|switch/i, /apptweak|sensor tower|mobile action|appfollow/i],
148
130
  answerRu:
149
- "Astro поддерживает импорт/экспорт ключевых слов через CSV и отдельный перенос всей истории через файл model.sqlite. Отдельно описан перенос лицензии на другой Mac через Lemon Squeezy.",
131
+ "Astro supports keyword import/export via CSV and full history migration through the model.sqlite file. License transfer to another Mac is described as a separate Lemon Squeezy flow.",
150
132
  answerEn:
151
133
  "Astro supports keyword import/export via CSV and full history migration through the model.sqlite file. License transfer to another Mac is described as a separate Lemon Squeezy flow.",
152
134
  next: [
153
- "Для полного переноса истории используйте сценарий с model.sqlite, не CSV.",
154
- "Перед переносом лицензии выйдите из аккаунта на старом устройстве.",
135
+ "Use the model.sqlite flow for full history migration, not CSV.",
136
+ "Sign out on the old device before transferring the license.",
155
137
  ],
156
138
  sources: [SOURCES.importExport, SOURCES.transfer, SOURCES.terms],
157
139
  },
158
140
  {
159
141
  id: "official_mcp_status",
160
142
  title: "Official MCP availability",
161
- patterns: [
162
- /mcp|cursor|server|api|integration|интеграц|подключ/i,
163
- /official|официальн/i,
164
- ],
143
+ patterns: [/mcp|cursor|server|api|integration/i, /official/i],
165
144
  answerRu:
166
- "В Terms у Astro указан будущий функционал MCP как planned capability. Это означает, что на момент последней проверки официальный MCP может быть не выпущен публично, поэтому текущий сервер в этом репозитории реализован как независимая интеграция.",
145
+ "Astro Terms mention MCP as a planned capability. That implies the official MCP may not yet be publicly released, so the server in this repository is built as an independent integration.",
167
146
  answerEn:
168
147
  "Astro Terms mention MCP as a planned capability. That implies the official MCP may not yet be publicly released, so the server in this repository is built as an independent integration.",
169
148
  next: [
170
- "Используйте этот MCP как workflow assistant для сценариев Astro.",
171
- "Периодически проверяйте docs/terms на появление официального API или MCP endpoint.",
149
+ "Use this MCP as a workflow assistant for Astro scenarios.",
150
+ "Re-check docs/terms regularly for any official API or MCP endpoint updates.",
172
151
  ],
173
152
  sources: [SOURCES.terms, SOURCES.docs],
174
153
  },
@@ -178,32 +157,32 @@ const SCENARIO_SUMMARY = [
178
157
  {
179
158
  id: "scenario_onboarding_first_value",
180
159
  title: "Onboarding to first value",
181
- goal: "Поднять аккаунт, приложение и baseline-метрики в первый рабочий день.",
160
+ goal: "Set up the account, app, and baseline metrics on the first working day.",
182
161
  },
183
162
  {
184
163
  id: "scenario_keyword_research",
185
164
  title: "Keyword research loop",
186
- goal: "Собрать и приоритизировать семантическое ядро под целевые сторы.",
165
+ goal: "Collect and prioritize the keyword core for target stores.",
187
166
  },
188
167
  {
189
168
  id: "scenario_competitor_analysis",
190
169
  title: "Competitor benchmarking",
191
- goal: "Собрать gap-анализ по конкурентам и найти быстрые точки роста.",
170
+ goal: "Build competitor gap analysis and identify fast growth opportunities.",
192
171
  },
193
172
  {
194
173
  id: "scenario_localization_strategy",
195
174
  title: "Localization expansion",
196
- goal: "Спланировать и запустить локализацию по странам/языкам с приоритетами.",
175
+ goal: "Plan and launch localization by countries/locales with priorities.",
197
176
  },
198
177
  {
199
178
  id: "scenario_rankings_and_ratings",
200
179
  title: "Rankings and ratings monitoring",
201
- goal: "Сделать цикл регулярного контроля позиций и качества пользовательского фидбека.",
180
+ goal: "Run a recurring loop for rankings control and feedback quality tracking.",
202
181
  },
203
182
  {
204
183
  id: "scenario_migration_and_transfer",
205
184
  title: "Migration/import and license transfer",
206
- goal: "Без потери данных перейти с других ASO-сервисов или между устройствами.",
185
+ goal: "Migrate from other ASO tools or between devices without data loss.",
207
186
  },
208
187
  ];
209
188
 
@@ -356,8 +335,8 @@ const TOOL_DEFINITIONS = [
356
335
  },
357
336
  language: {
358
337
  type: "string",
359
- enum: ["ru", "en"],
360
- default: "ru",
338
+ enum: ["en", "ru"],
339
+ default: "en",
361
340
  },
362
341
  },
363
342
  required: ["query"],
@@ -618,7 +597,7 @@ const TOOL_HANDLERS = {
618
597
 
619
598
  standard_answer: (args = {}) => {
620
599
  const query = safeText(args.query, "");
621
- const language = safeText(args.language, "ru").toLowerCase() === "en" ? "en" : "ru";
600
+ const language = safeText(args.language, "en").toLowerCase() === "ru" ? "ru" : "en";
622
601
 
623
602
  if (!query) {
624
603
  return asError("Input validation error: query is required.");