appstore-mcp 1.0.0

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 (61) hide show
  1. package/.claude/CLAUDE.md +29 -0
  2. package/.claude/settings.local.json +24 -0
  3. package/.prettierrc +7 -0
  4. package/README.md +170 -0
  5. package/dist/app-store-service.d.ts +21 -0
  6. package/dist/app-store-service.d.ts.map +1 -0
  7. package/dist/app-store-service.js +146 -0
  8. package/dist/index.d.ts +3 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +22 -0
  11. package/dist/mcp/resources/countries.d.ts +5 -0
  12. package/dist/mcp/resources/countries.d.ts.map +1 -0
  13. package/dist/mcp/resources/countries.js +236 -0
  14. package/dist/mcp/resources/index.d.ts +3 -0
  15. package/dist/mcp/resources/index.d.ts.map +1 -0
  16. package/dist/mcp/resources/index.js +80 -0
  17. package/dist/mcp/tools/get-app-details.d.ts +3 -0
  18. package/dist/mcp/tools/get-app-details.d.ts.map +1 -0
  19. package/dist/mcp/tools/get-app-details.js +84 -0
  20. package/dist/mcp/tools/get-app-info.d.ts +3 -0
  21. package/dist/mcp/tools/get-app-info.d.ts.map +1 -0
  22. package/dist/mcp/tools/get-app-info.js +156 -0
  23. package/dist/mcp/tools/get-app-release-info.d.ts +3 -0
  24. package/dist/mcp/tools/get-app-release-info.d.ts.map +1 -0
  25. package/dist/mcp/tools/get-app-release-info.js +80 -0
  26. package/dist/mcp/tools/get-app-screenshots.d.ts +3 -0
  27. package/dist/mcp/tools/get-app-screenshots.d.ts.map +1 -0
  28. package/dist/mcp/tools/get-app-screenshots.js +71 -0
  29. package/dist/mcp/tools/get-trending-apps.d.ts +3 -0
  30. package/dist/mcp/tools/get-trending-apps.d.ts.map +1 -0
  31. package/dist/mcp/tools/get-trending-apps.js +89 -0
  32. package/dist/mcp/tools/index.d.ts +3 -0
  33. package/dist/mcp/tools/index.d.ts.map +1 -0
  34. package/dist/mcp/tools/index.js +12 -0
  35. package/dist/mcp/tools/list-categories.d.ts +3 -0
  36. package/dist/mcp/tools/list-categories.d.ts.map +1 -0
  37. package/dist/mcp/tools/list-categories.js +38 -0
  38. package/dist/mcp/tools/list-countries.d.ts +3 -0
  39. package/dist/mcp/tools/list-countries.d.ts.map +1 -0
  40. package/dist/mcp/tools/list-countries.js +40 -0
  41. package/dist/mcp/tools/search-apps.d.ts +3 -0
  42. package/dist/mcp/tools/search-apps.d.ts.map +1 -0
  43. package/dist/mcp/tools/search-apps.js +67 -0
  44. package/dist/services/app-store-service.d.ts +21 -0
  45. package/dist/services/app-store-service.d.ts.map +1 -0
  46. package/dist/services/app-store-service.js +146 -0
  47. package/dist/types.d.ts +46 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +41 -0
  50. package/eslint.config.js +9 -0
  51. package/package.json +46 -0
  52. package/src/index.ts +24 -0
  53. package/src/mcp/resources/countries.ts +234 -0
  54. package/src/mcp/resources/index.ts +117 -0
  55. package/src/mcp/tools/get-app-info.ts +183 -0
  56. package/src/mcp/tools/get-trending-apps.ts +108 -0
  57. package/src/mcp/tools/index.ts +10 -0
  58. package/src/mcp/tools/search-apps.ts +74 -0
  59. package/src/services/app-store-service.ts +236 -0
  60. package/src/types.ts +77 -0
  61. package/tsconfig.json +21 -0
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COUNTRIES = void 0;
4
+ exports.findCountryByCode = findCountryByCode;
5
+ exports.findCountryByName = findCountryByName;
6
+ exports.COUNTRIES = [
7
+ { code: 'AF', name: 'Afghanistan' },
8
+ { code: 'AL', name: 'Albania' },
9
+ { code: 'DZ', name: 'Algeria' },
10
+ { code: 'AS', name: 'American Samoa' },
11
+ { code: 'AD', name: 'Andorra' },
12
+ { code: 'AO', name: 'Angola' },
13
+ { code: 'AI', name: 'Anguilla' },
14
+ { code: 'AR', name: 'Argentina' },
15
+ { code: 'AM', name: 'Armenia' },
16
+ { code: 'AW', name: 'Aruba' },
17
+ { code: 'AU', name: 'Australia' },
18
+ { code: 'AT', name: 'Austria' },
19
+ { code: 'AZ', name: 'Azerbaijan' },
20
+ { code: 'BS', name: 'Bahamas' },
21
+ { code: 'BH', name: 'Bahrain' },
22
+ { code: 'BD', name: 'Bangladesh' },
23
+ { code: 'BB', name: 'Barbados' },
24
+ { code: 'BY', name: 'Belarus' },
25
+ { code: 'BE', name: 'Belgium' },
26
+ { code: 'BZ', name: 'Belize' },
27
+ { code: 'BJ', name: 'Benin' },
28
+ { code: 'BM', name: 'Bermuda' },
29
+ { code: 'BT', name: 'Bhutan' },
30
+ { code: 'BO', name: 'Bolivia' },
31
+ { code: 'BA', name: 'Bosnia and Herzegovina' },
32
+ { code: 'BW', name: 'Botswana' },
33
+ { code: 'BR', name: 'Brazil' },
34
+ { code: 'VG', name: 'British Virgin Islands' },
35
+ { code: 'BN', name: 'Brunei' },
36
+ { code: 'BG', name: 'Bulgaria' },
37
+ { code: 'BF', name: 'Burkina Faso' },
38
+ { code: 'BI', name: 'Burundi' },
39
+ { code: 'KH', name: 'Cambodia' },
40
+ { code: 'CM', name: 'Cameroon' },
41
+ { code: 'CA', name: 'Canada' },
42
+ { code: 'CV', name: 'Cape Verde' },
43
+ { code: 'KY', name: 'Cayman Islands' },
44
+ { code: 'CF', name: 'Central African Republic' },
45
+ { code: 'TD', name: 'Chad' },
46
+ { code: 'CL', name: 'Chile' },
47
+ { code: 'CN', name: 'China' },
48
+ { code: 'CO', name: 'Colombia' },
49
+ { code: 'KM', name: 'Comoros' },
50
+ { code: 'CK', name: 'Cook Islands' },
51
+ { code: 'CR', name: 'Costa Rica' },
52
+ { code: 'HR', name: 'Croatia' },
53
+ { code: 'CU', name: 'Cuba' },
54
+ { code: 'CW', name: 'Curacao' },
55
+ { code: 'CY', name: 'Cyprus' },
56
+ { code: 'CZ', name: 'Czech Republic' },
57
+ { code: 'CD', name: 'Democratic Republic of the Congo' },
58
+ { code: 'DK', name: 'Denmark' },
59
+ { code: 'DJ', name: 'Djibouti' },
60
+ { code: 'DM', name: 'Dominica' },
61
+ { code: 'DO', name: 'Dominican Republic' },
62
+ { code: 'TL', name: 'East Timor' },
63
+ { code: 'EC', name: 'Ecuador' },
64
+ { code: 'EG', name: 'Egypt' },
65
+ { code: 'SV', name: 'El Salvador' },
66
+ { code: 'ER', name: 'Eritrea' },
67
+ { code: 'EE', name: 'Estonia' },
68
+ { code: 'ET', name: 'Ethiopia' },
69
+ { code: 'FO', name: 'Faroe Islands' },
70
+ { code: 'FJ', name: 'Fiji' },
71
+ { code: 'FI', name: 'Finland' },
72
+ { code: 'FR', name: 'France' },
73
+ { code: 'PF', name: 'French Polynesia' },
74
+ { code: 'GA', name: 'Gabon' },
75
+ { code: 'GM', name: 'Gambia' },
76
+ { code: 'GE', name: 'Georgia' },
77
+ { code: 'DE', name: 'Germany' },
78
+ { code: 'GH', name: 'Ghana' },
79
+ { code: 'GR', name: 'Greece' },
80
+ { code: 'GL', name: 'Greenland' },
81
+ { code: 'GD', name: 'Grenada' },
82
+ { code: 'GU', name: 'Guam' },
83
+ { code: 'GT', name: 'Guatemala' },
84
+ { code: 'GG', name: 'Guernsey' },
85
+ { code: 'GN', name: 'Guinea' },
86
+ { code: 'GW', name: 'Guinea-Bissau' },
87
+ { code: 'GY', name: 'Guyana' },
88
+ { code: 'HT', name: 'Haiti' },
89
+ { code: 'HN', name: 'Honduras' },
90
+ { code: 'HK', name: 'Hong Kong' },
91
+ { code: 'HU', name: 'Hungary' },
92
+ { code: 'IS', name: 'Iceland' },
93
+ { code: 'IN', name: 'India' },
94
+ { code: 'ID', name: 'Indonesia' },
95
+ { code: 'IR', name: 'Iran' },
96
+ { code: 'IQ', name: 'Iraq' },
97
+ { code: 'IE', name: 'Ireland' },
98
+ { code: 'IM', name: 'Isle of Man' },
99
+ { code: 'IL', name: 'Israel' },
100
+ { code: 'IT', name: 'Italy' },
101
+ { code: 'CI', name: 'Ivory Coast' },
102
+ { code: 'JM', name: 'Jamaica' },
103
+ { code: 'JP', name: 'Japan' },
104
+ { code: 'JE', name: 'Jersey' },
105
+ { code: 'JO', name: 'Jordan' },
106
+ { code: 'KZ', name: 'Kazakhstan' },
107
+ { code: 'KE', name: 'Kenya' },
108
+ { code: 'KI', name: 'Kiribati' },
109
+ { code: 'XK', name: 'Kosovo' },
110
+ { code: 'KW', name: 'Kuwait' },
111
+ { code: 'KG', name: 'Kyrgyzstan' },
112
+ { code: 'LA', name: 'Laos' },
113
+ { code: 'LV', name: 'Latvia' },
114
+ { code: 'LB', name: 'Lebanon' },
115
+ { code: 'LS', name: 'Lesotho' },
116
+ { code: 'LR', name: 'Liberia' },
117
+ { code: 'LY', name: 'Libya' },
118
+ { code: 'LI', name: 'Liechtenstein' },
119
+ { code: 'LT', name: 'Lithuania' },
120
+ { code: 'LU', name: 'Luxembourg' },
121
+ { code: 'MO', name: 'Macau' },
122
+ { code: 'MK', name: 'Macedonia' },
123
+ { code: 'MG', name: 'Madagascar' },
124
+ { code: 'MW', name: 'Malawi' },
125
+ { code: 'MY', name: 'Malaysia' },
126
+ { code: 'MV', name: 'Maldives' },
127
+ { code: 'ML', name: 'Mali' },
128
+ { code: 'MT', name: 'Malta' },
129
+ { code: 'MH', name: 'Marshall Islands' },
130
+ { code: 'MR', name: 'Mauritania' },
131
+ { code: 'MU', name: 'Mauritius' },
132
+ { code: 'YT', name: 'Mayotte' },
133
+ { code: 'MX', name: 'Mexico' },
134
+ { code: 'FM', name: 'Micronesia' },
135
+ { code: 'MD', name: 'Moldova' },
136
+ { code: 'MC', name: 'Monaco' },
137
+ { code: 'MN', name: 'Mongolia' },
138
+ { code: 'ME', name: 'Montenegro' },
139
+ { code: 'MA', name: 'Morocco' },
140
+ { code: 'MZ', name: 'Mozambique' },
141
+ { code: 'MM', name: 'Myanmar' },
142
+ { code: 'NA', name: 'Namibia' },
143
+ { code: 'NP', name: 'Nepal' },
144
+ { code: 'NL', name: 'Netherlands' },
145
+ { code: 'AN', name: 'Netherlands Antilles' },
146
+ { code: 'NC', name: 'New Caledonia' },
147
+ { code: 'NZ', name: 'New Zealand' },
148
+ { code: 'NI', name: 'Nicaragua' },
149
+ { code: 'NE', name: 'Niger' },
150
+ { code: 'NG', name: 'Nigeria' },
151
+ { code: 'KP', name: 'North Korea' },
152
+ { code: 'MP', name: 'Northern Mariana Islands' },
153
+ { code: 'NO', name: 'Norway' },
154
+ { code: 'OM', name: 'Oman' },
155
+ { code: 'PK', name: 'Pakistan' },
156
+ { code: 'PS', name: 'Palestine' },
157
+ { code: 'PA', name: 'Panama' },
158
+ { code: 'PG', name: 'Papua New Guinea' },
159
+ { code: 'PY', name: 'Paraguay' },
160
+ { code: 'PE', name: 'Peru' },
161
+ { code: 'PH', name: 'Philippines' },
162
+ { code: 'PL', name: 'Poland' },
163
+ { code: 'PT', name: 'Portugal' },
164
+ { code: 'PR', name: 'Puerto Rico' },
165
+ { code: 'QA', name: 'Qatar' },
166
+ { code: 'CG', name: 'Republic of the Congo' },
167
+ { code: 'RE', name: 'Reunion' },
168
+ { code: 'RO', name: 'Romania' },
169
+ { code: 'RU', name: 'Russia' },
170
+ { code: 'RW', name: 'Rwanda' },
171
+ { code: 'KN', name: 'Saint Kitts and Nevis' },
172
+ { code: 'LC', name: 'Saint Lucia' },
173
+ { code: 'MF', name: 'Saint Martin' },
174
+ { code: 'PM', name: 'Saint Pierre and Miquelon' },
175
+ { code: 'VC', name: 'Saint Vincent and the Grenadines' },
176
+ { code: 'WS', name: 'Samoa' },
177
+ { code: 'SM', name: 'San Marino' },
178
+ { code: 'ST', name: 'Sao Tome and Principe' },
179
+ { code: 'SA', name: 'Saudi Arabia' },
180
+ { code: 'SN', name: 'Senegal' },
181
+ { code: 'RS', name: 'Serbia' },
182
+ { code: 'SC', name: 'Seychelles' },
183
+ { code: 'SL', name: 'Sierra Leone' },
184
+ { code: 'SG', name: 'Singapore' },
185
+ { code: 'SX', name: 'Sint Maarten' },
186
+ { code: 'SK', name: 'Slovakia' },
187
+ { code: 'SI', name: 'Slovenia' },
188
+ { code: 'SB', name: 'Solomon Islands' },
189
+ { code: 'SO', name: 'Somalia' },
190
+ { code: 'ZA', name: 'South Africa' },
191
+ { code: 'KR', name: 'South Korea' },
192
+ { code: 'SS', name: 'South Sudan' },
193
+ { code: 'ES', name: 'Spain' },
194
+ { code: 'LK', name: 'Sri Lanka' },
195
+ { code: 'SD', name: 'Sudan' },
196
+ { code: 'SR', name: 'Suriname' },
197
+ { code: 'SZ', name: 'Swaziland' },
198
+ { code: 'SE', name: 'Sweden' },
199
+ { code: 'CH', name: 'Switzerland' },
200
+ { code: 'SY', name: 'Syria' },
201
+ { code: 'TW', name: 'Taiwan' },
202
+ { code: 'TJ', name: 'Tajikistan' },
203
+ { code: 'TZ', name: 'Tanzania' },
204
+ { code: 'TH', name: 'Thailand' },
205
+ { code: 'TG', name: 'Togo' },
206
+ { code: 'TO', name: 'Tonga' },
207
+ { code: 'TT', name: 'Trinidad and Tobago' },
208
+ { code: 'TN', name: 'Tunisia' },
209
+ { code: 'TR', name: 'Turkey' },
210
+ { code: 'TM', name: 'Turkmenistan' },
211
+ { code: 'TC', name: 'Turks and Caicos Islands' },
212
+ { code: 'TV', name: 'Tuvalu' },
213
+ { code: 'VI', name: 'U.S. Virgin Islands' },
214
+ { code: 'UG', name: 'Uganda' },
215
+ { code: 'UA', name: 'Ukraine' },
216
+ { code: 'AE', name: 'United Arab Emirates' },
217
+ { code: 'GB', name: 'United Kingdom' },
218
+ { code: 'US', name: 'United States' },
219
+ { code: 'UY', name: 'Uruguay' },
220
+ { code: 'UZ', name: 'Uzbekistan' },
221
+ { code: 'VU', name: 'Vanuatu' },
222
+ { code: 'VE', name: 'Venezuela' },
223
+ { code: 'VN', name: 'Vietnam' },
224
+ { code: 'EH', name: 'Western Sahara' },
225
+ { code: 'YE', name: 'Yemen' },
226
+ { code: 'ZM', name: 'Zambia' },
227
+ { code: 'ZW', name: 'Zimbabwe' },
228
+ ];
229
+ function findCountryByCode(code) {
230
+ return exports.COUNTRIES.find((country) => country.code.toUpperCase() === code.toUpperCase());
231
+ }
232
+ function findCountryByName(name) {
233
+ const lowerName = name.toLowerCase();
234
+ return exports.COUNTRIES.find((country) => country.name.toLowerCase().includes(lowerName));
235
+ }
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21jcC9yZXNvdXJjZXMvY291bnRyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWtPQSw4Q0FFQztBQUVELDhDQUdDO0FBdk9ZLFFBQUEsU0FBUyxHQUFjO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0lBQ25DLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7SUFDdEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7SUFDOUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7SUFDaEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7SUFDakMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7SUFDN0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7SUFDakMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7SUFDbEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7SUFDbEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7SUFDaEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7SUFDOUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7SUFDN0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7SUFDOUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRTtJQUM5QyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtJQUNoQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtJQUM5QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFO0lBQzlDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO0lBQ3BDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVB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QUFrQixFQUFFO0lBQ3hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ2pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQzVCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ2pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFO0lBQ3JDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ2pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ2pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQzVCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQzVCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0lBQ25DLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0lBQ25DLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQzVCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFO0lBQ3JDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ2pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ2pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQzVCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7SUFDeEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7SUFDbEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7SUFDakMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7SUFDOUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7SUFDbEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7SUFDOUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7SUFDaEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7SUFDbEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7SUFDbEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7SUFDN0IsRUFBRSxJQUFJLEVB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QUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO0lBQ3BDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQzlCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO0lBQ3BDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQ2pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO0lBQ3BDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7SUFDdkMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUU7SUFDcEMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7SUFDbkMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7SUFDbkMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7SUFDN0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7SUFDakMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7SUFDN0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVB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
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerAllResources(server: McpServer): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAgHrD"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerAllResources = registerAllResources;
4
+ const countries_1 = require("./countries");
5
+ const types_1 = require("../../types");
6
+ function registerAllResources(server) {
7
+ server.registerResource('countries', 'appstore://countries', {
8
+ description: 'List of all available App Store country codes',
9
+ mimeType: 'application/json',
10
+ }, async (uri) => ({
11
+ contents: [
12
+ {
13
+ uri: uri.href,
14
+ mimeType: 'application/json',
15
+ text: JSON.stringify({
16
+ count: countries_1.COUNTRIES.length,
17
+ countries: countries_1.COUNTRIES.map((country) => ({
18
+ code: country.code,
19
+ name: country.name,
20
+ })),
21
+ }, null, 2),
22
+ },
23
+ ],
24
+ }));
25
+ server.registerResource('categories', 'appstore://categories', {
26
+ description: 'List of all App Store categories with their IDs',
27
+ mimeType: 'application/json',
28
+ }, async (uri) => ({
29
+ contents: [
30
+ {
31
+ uri: uri.href,
32
+ mimeType: 'application/json',
33
+ text: JSON.stringify({
34
+ categories: types_1.APP_STORE_CATEGORIES.map((category) => ({
35
+ id: category.id,
36
+ name: category.name,
37
+ emoji: category.emoji,
38
+ })),
39
+ }, null, 2),
40
+ },
41
+ ],
42
+ }));
43
+ server.registerResource('platforms', 'appstore://platforms', {
44
+ description: 'List of supported App Store platforms',
45
+ mimeType: 'application/json',
46
+ }, async (uri) => ({
47
+ contents: [
48
+ {
49
+ uri: uri.href,
50
+ mimeType: 'application/json',
51
+ text: JSON.stringify({
52
+ platforms: types_1.PLATFORMS.map((platform) => ({
53
+ value: platform.value,
54
+ label: platform.label,
55
+ emoji: platform.emoji,
56
+ })),
57
+ }, null, 2),
58
+ },
59
+ ],
60
+ }));
61
+ server.registerResource('pricing-types', 'appstore://pricing-types', {
62
+ description: 'List of App Store pricing types (free, paid, grossing)',
63
+ mimeType: 'application/json',
64
+ }, async (uri) => ({
65
+ contents: [
66
+ {
67
+ uri: uri.href,
68
+ mimeType: 'application/json',
69
+ text: JSON.stringify({
70
+ pricingTypes: types_1.PRICING_TYPES.map((pricing) => ({
71
+ value: pricing.value,
72
+ label: pricing.label,
73
+ emoji: pricing.emoji,
74
+ })),
75
+ }, null, 2),
76
+ },
77
+ ],
78
+ }));
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL3Jlc291cmNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLG9EQWdIQztBQW5IRCwyQ0FBd0M7QUFDeEMsdUNBQTZFO0FBRTdFLFNBQWdCLG9CQUFvQixDQUFDLE1BQWlCO0lBQ2xELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDbkIsV0FBVyxFQUNYLHNCQUFzQixFQUN0QjtRQUNJLFdBQVcsRUFBRSwrQ0FBK0M7UUFDNUQsUUFBUSxFQUFFLGtCQUFrQjtLQUMvQixFQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDWixRQUFRLEVBQUU7WUFDTjtnQkFDSSxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2IsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ2hCO29CQUNJLEtBQUssRUFBRSxxQkFBUyxDQUFDLE1BQU07b0JBQ3ZCLFNBQVMsRUFBRSxxQkFBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO3dCQUNsQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7cUJBQ3JCLENBQUMsQ0FBQztpQkFDTixFQUNELElBQUksRUFDSixDQUFDLENBQ0o7YUFDSjtTQUNKO0tBQ0osQ0FBQyxDQUNMLENBQUM7SUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQ25CLFlBQVksRUFDWix1QkFBdUIsRUFDdkI7UUFDSSxXQUFXLEVBQUUsaURBQWlEO1FBQzlELFFBQVEsRUFBRSxrQkFBa0I7S0FDL0IsRUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1osUUFBUSxFQUFFO1lBQ047Z0JBQ0ksR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNiLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUNoQjtvQkFDSSxVQUFVLEVBQUUsNEJBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNoRCxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7d0JBQ2YsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO3dCQUNuQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7cUJBQ3hCLENBQUMsQ0FBQztpQkFDTixFQUNELElBQUksRUFDSixDQUFDLENBQ0o7YUFDSjtTQUNKO0tBQ0osQ0FBQyxDQUNMLENBQUM7SUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQ25CLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEI7UUFDSSxXQUFXLEVBQUUsdUNBQXVDO1FBQ3BELFFBQVEsRUFBRSxrQkFBa0I7S0FDL0IsRUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1osUUFBUSxFQUFFO1lBQ047Z0JBQ0ksR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNiLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUNoQjtvQkFDSSxTQUFTLEVBQUUsaUJBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3BDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSzt3QkFDckIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO3dCQUNyQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7cUJBQ3hCLENBQUMsQ0FBQztpQkFDTixFQUNELElBQUksRUFDSixDQUFDLENBQ0o7YUFDSjtTQUNKO0tBQ0osQ0FBQyxDQUNMLENBQUM7SUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQ25CLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUI7UUFDSSxXQUFXLEVBQUUsd0RBQXdEO1FBQ3JFLFFBQVEsRUFBRSxrQkFBa0I7S0FDL0IsRUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1osUUFBUSxFQUFFO1lBQ047Z0JBQ0ksR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNiLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUNoQjtvQkFDSSxZQUFZLEVBQUUscUJBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSzt3QkFDcEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO3dCQUNwQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7cUJBQ3ZCLENBQUMsQ0FBQztpQkFDTixFQUNELElBQUksRUFDSixDQUFDLENBQ0o7YUFDSjtTQUNKO0tBQ0osQ0FBQyxDQUNMLENBQUM7QUFDTixDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerGetAppDetails(server: McpServer): void;
3
+ //# sourceMappingURL=get-app-details.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-details.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-app-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,QA2FtD"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerGetAppDetails = registerGetAppDetails;
4
+ const zod_1 = require("zod");
5
+ const app_store_service_1 = require("../../app-store-service");
6
+ function registerGetAppDetails(server) {
7
+ server.registerTool('get_app_details', {
8
+ description: 'Get detailed information about a specific app by its App Store ID',
9
+ inputSchema: {
10
+ appId: zod_1.z.string().describe('The App Store ID of the app (numeric ID from the App Store URL)'),
11
+ country: zod_1.z
12
+ .string()
13
+ .optional()
14
+ .describe('Country code for the App Store (e.g., US, GB, JP). Defaults to US'),
15
+ },
16
+ }, async ({ appId, country }) => {
17
+ const countryCode = country || 'US';
18
+ try {
19
+ const app = await app_store_service_1.AppStoreService.getAppDetails(appId, countryCode);
20
+ if (!app) {
21
+ return {
22
+ content: [
23
+ {
24
+ type: 'text',
25
+ text: JSON.stringify({
26
+ success: false,
27
+ error: `App with ID ${appId} not found`,
28
+ }, null, 2),
29
+ },
30
+ ],
31
+ };
32
+ }
33
+ const result = {
34
+ success: true,
35
+ app: {
36
+ id: app.id,
37
+ name: app.name,
38
+ artistName: app.artistName,
39
+ bundleId: app.bundleId,
40
+ url: app.url,
41
+ iconUrl: app.iconUrl,
42
+ description: app.description,
43
+ version: app.version,
44
+ price: app.price,
45
+ formattedPrice: app.formattedPrice || 'Free',
46
+ primaryGenre: app.primaryGenreName,
47
+ genres: app.genres,
48
+ rating: app.averageUserRating?.toFixed(1) || 'N/A',
49
+ ratingCount: app.userRatingCount || 0,
50
+ releaseDate: app.releaseDate,
51
+ currentVersionReleaseDate: app.currentVersionReleaseDate,
52
+ minimumOsVersion: app.minimumOsVersion,
53
+ fileSizeBytes: app.fileSizeBytes,
54
+ contentAdvisoryRating: app.contentAdvisoryRating,
55
+ screenshotCount: app.screenshotUrls?.length || 0,
56
+ ipadScreenshotCount: app.ipadScreenshotUrls?.length || 0,
57
+ },
58
+ };
59
+ return {
60
+ content: [
61
+ {
62
+ type: 'text',
63
+ text: JSON.stringify(result, null, 2),
64
+ },
65
+ ],
66
+ };
67
+ }
68
+ catch (error) {
69
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
70
+ return {
71
+ content: [
72
+ {
73
+ type: 'text',
74
+ text: JSON.stringify({
75
+ success: false,
76
+ error: errorMessage,
77
+ }, null, 2),
78
+ },
79
+ ],
80
+ };
81
+ }
82
+ });
83
+ }
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFwcC1kZXRhaWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21jcC90b29scy9nZXQtYXBwLWRldGFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxzREEyRkM7QUE5RkQsNkJBQXdCO0FBQ3hCLCtEQUEwRDtBQUUxRCxTQUFnQixxQkFBcUIsQ0FBQyxNQUFpQjtJQUNuRCxNQUFNLENBQUMsWUFBWSxDQUNmLGlCQUFpQixFQUNqQjtRQUNJLFdBQVcsRUFBRSxtRUFBbUU7UUFDaEYsV0FBVyxFQUFFO1lBQ1QsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUVBQWlFLENBQUM7WUFDN0YsT0FBTyxFQUFFLE9BQUM7aUJBQ0wsTUFBTSxFQUFFO2lCQUNSLFFBQVEsRUFBRTtpQkFDVixRQUFRLENBQUMsbUVBQW1FLENBQUM7U0FDckY7S0FDSixFQUNELEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDO1lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxtQ0FBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFcEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNQLE9BQU87b0JBQ0gsT0FBTyxFQUFFO3dCQUNMOzRCQUNJLElBQUksRUFBRSxNQUFlOzRCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FDaEI7Z0NBQ0ksT0FBTyxFQUFFLEtBQUs7Z0NBQ2QsS0FBSyxFQUFFLGVBQWUsS0FBSyxZQUFZOzZCQUMxQyxFQUNELElBQUksRUFDSixDQUFDLENBQ0o7eUJBQ0o7cUJBQ0o7aUJBQ0osQ0FBQztZQUNOLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRztnQkFDWCxPQUFPLEVBQUUsSUFBSTtnQkFDYixHQUFHLEVBQUU7b0JBQ0QsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUNWLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFDZCxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVU7b0JBQzFCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtvQkFDdEIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO29CQUNaLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztvQkFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO29CQUM1QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87b0JBQ3BCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztvQkFDaEIsY0FBYyxFQUFFLEdBQUcsQ0FBQyxjQUFjLElBQUksTUFBTTtvQkFDNUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0I7b0JBQ2xDLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtvQkFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSztvQkFDbEQsV0FBVyxFQUFFLEdBQUcsQ0FBQyxlQUFlLElBQUksQ0FBQztvQkFDckMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO29CQUM1Qix5QkFBeUIsRUFBRSxHQUFHLENBQUMseUJBQXlCO29CQUN4RCxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCO29CQUN0QyxhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWE7b0JBQ2hDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxxQkFBcUI7b0JBQ2hELGVBQWUsRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFLE1BQU0sSUFBSSxDQUFDO29CQUNoRCxtQkFBbUIsRUFBRSxHQUFHLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxJQUFJLENBQUM7aUJBQzNEO2FBQ0osQ0FBQztZQUVGLE9BQU87Z0JBQ0gsT0FBTyxFQUFFO29CQUNMO3dCQUNJLElBQUksRUFBRSxNQUFlO3dCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztxQkFDeEM7aUJBQ0o7YUFDSixDQUFDO1FBQ04sQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDOUUsT0FBTztnQkFDSCxPQUFPLEVBQUU7b0JBQ0w7d0JBQ0ksSUFBSSxFQUFFLE1BQWU7d0JBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUNoQjs0QkFDSSxPQUFPLEVBQUUsS0FBSzs0QkFDZCxLQUFLLEVBQUUsWUFBWTt5QkFDdEIsRUFDRCxJQUFJLEVBQ0osQ0FBQyxDQUNKO3FCQUNKO2lCQUNKO2FBQ0osQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDLENBQ0osQ0FBQztBQUNOLENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerGetAppInfo(server: McpServer): void;
3
+ //# sourceMappingURL=get-app-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-info.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-app-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,QAsKnD"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerGetAppInfo = registerGetAppInfo;
4
+ const zod_1 = require("zod");
5
+ const app_store_service_1 = require("../../services/app-store-service");
6
+ function formatDate(dateString) {
7
+ if (!dateString)
8
+ return null;
9
+ const date = new Date(dateString);
10
+ return date.toLocaleDateString('en-US', {
11
+ year: 'numeric',
12
+ month: 'long',
13
+ day: 'numeric',
14
+ });
15
+ }
16
+ function registerGetAppInfo(server) {
17
+ server.registerTool('get_app_info', {
18
+ description: 'Get information about a specific app by its App Store ID. Use the "include" parameter to specify what data to return.',
19
+ inputSchema: {
20
+ appId: zod_1.z
21
+ .string()
22
+ .describe('The App Store ID of the app (numeric ID from the App Store URL)'),
23
+ country: zod_1.z
24
+ .string()
25
+ .optional()
26
+ .describe('Country code for the App Store (e.g., US, GB, JP). Defaults to US'),
27
+ include: zod_1.z
28
+ .string()
29
+ .optional()
30
+ .describe('What info to include: "basic" (name, artist, icon, price, rating), "full" (all details including description), "release" (release dates and version), "screenshots" (screenshot URLs). Defaults to "basic"'),
31
+ },
32
+ }, async ({ appId, country, include }) => {
33
+ const countryCode = country || 'US';
34
+ const infoType = (include || 'basic');
35
+ try {
36
+ const app = await app_store_service_1.AppStoreService.getAppDetails(appId, countryCode);
37
+ if (!app) {
38
+ return {
39
+ content: [
40
+ {
41
+ type: 'text',
42
+ text: JSON.stringify({
43
+ success: false,
44
+ error: `App with ID ${appId} not found`,
45
+ }, null, 2),
46
+ },
47
+ ],
48
+ };
49
+ }
50
+ let result = {
51
+ success: true,
52
+ appId: app.id,
53
+ country: countryCode,
54
+ include: infoType,
55
+ };
56
+ switch (infoType) {
57
+ case 'basic':
58
+ result.app = {
59
+ id: app.id,
60
+ name: app.name,
61
+ artistName: app.artistName,
62
+ url: app.url,
63
+ iconUrl: app.iconUrl,
64
+ formattedPrice: app.formattedPrice || 'Free',
65
+ rating: app.averageUserRating?.toFixed(1) || 'N/A',
66
+ ratingCount: app.userRatingCount || 0,
67
+ primaryGenre: app.primaryGenreName,
68
+ };
69
+ break;
70
+ case 'full':
71
+ result.app = {
72
+ id: app.id,
73
+ name: app.name,
74
+ artistName: app.artistName,
75
+ bundleId: app.bundleId,
76
+ url: app.url,
77
+ iconUrl: app.iconUrl,
78
+ description: app.description,
79
+ version: app.version,
80
+ price: app.price,
81
+ formattedPrice: app.formattedPrice || 'Free',
82
+ primaryGenre: app.primaryGenreName,
83
+ genres: app.genres,
84
+ rating: app.averageUserRating?.toFixed(1) || 'N/A',
85
+ ratingCount: app.userRatingCount || 0,
86
+ releaseDate: app.releaseDate,
87
+ releaseDateFormatted: formatDate(app.releaseDate),
88
+ currentVersionReleaseDate: app.currentVersionReleaseDate,
89
+ currentVersionReleaseDateFormatted: formatDate(app.currentVersionReleaseDate),
90
+ minimumOsVersion: app.minimumOsVersion,
91
+ fileSizeBytes: app.fileSizeBytes,
92
+ contentAdvisoryRating: app.contentAdvisoryRating,
93
+ screenshotCount: app.screenshotUrls?.length || 0,
94
+ ipadScreenshotCount: app.ipadScreenshotUrls?.length || 0,
95
+ };
96
+ break;
97
+ case 'release':
98
+ result.release = {
99
+ currentVersion: app.version,
100
+ originalReleaseDate: app.releaseDate,
101
+ originalReleaseDateFormatted: formatDate(app.releaseDate),
102
+ currentVersionReleaseDate: app.currentVersionReleaseDate,
103
+ currentVersionReleaseDateFormatted: formatDate(app.currentVersionReleaseDate),
104
+ };
105
+ break;
106
+ case 'screenshots':
107
+ result.screenshots = {
108
+ iphone: {
109
+ count: app.screenshotUrls?.length || 0,
110
+ urls: app.screenshotUrls || [],
111
+ },
112
+ ipad: {
113
+ count: app.ipadScreenshotUrls?.length || 0,
114
+ urls: app.ipadScreenshotUrls || [],
115
+ },
116
+ };
117
+ break;
118
+ default:
119
+ result.app = {
120
+ id: app.id,
121
+ name: app.name,
122
+ artistName: app.artistName,
123
+ url: app.url,
124
+ iconUrl: app.iconUrl,
125
+ formattedPrice: app.formattedPrice || 'Free',
126
+ rating: app.averageUserRating?.toFixed(1) || 'N/A',
127
+ ratingCount: app.userRatingCount || 0,
128
+ primaryGenre: app.primaryGenreName,
129
+ };
130
+ }
131
+ return {
132
+ content: [
133
+ {
134
+ type: 'text',
135
+ text: JSON.stringify(result, null, 2),
136
+ },
137
+ ],
138
+ };
139
+ }
140
+ catch (error) {
141
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
142
+ return {
143
+ content: [
144
+ {
145
+ type: 'text',
146
+ text: JSON.stringify({
147
+ success: false,
148
+ error: errorMessage,
149
+ }, null, 2),
150
+ },
151
+ ],
152
+ };
153
+ }
154
+ });
155
+ }
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFwcC1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21jcC90b29scy9nZXQtYXBwLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsZ0RBc0tDO0FBckxELDZCQUF3QjtBQUN4Qix3RUFBbUU7QUFJbkUsU0FBUyxVQUFVLENBQUMsVUFBbUI7SUFDbkMsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM3QixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7UUFDcEMsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsTUFBTTtRQUNiLEdBQUcsRUFBRSxTQUFTO0tBQ2pCLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFpQjtJQUNoRCxNQUFNLENBQUMsWUFBWSxDQUNmLGNBQWMsRUFDZDtRQUNJLFdBQVcsRUFDUCx1SEFBdUg7UUFDM0gsV0FBVyxFQUFFO1lBQ1QsS0FBSyxFQUFFLE9BQUM7aUJBQ0gsTUFBTSxFQUFFO2lCQUNSLFFBQVEsQ0FBQyxpRUFBaUUsQ0FBQztZQUNoRixPQUFPLEVBQUUsT0FBQztpQkFDTCxNQUFNLEVBQUU7aUJBQ1IsUUFBUSxFQUFFO2lCQUNWLFFBQVEsQ0FBQyxtRUFBbUUsQ0FBQztZQUNsRixPQUFPLEVBQUUsT0FBQztpQkFDTCxNQUFNLEVBQUU7aUJBQ1IsUUFBUSxFQUFFO2lCQUNWLFFBQVEsQ0FDTCw0TUFBNE0sQ0FDL007U0FDUjtLQUNKLEVBQ0QsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDcEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FB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
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerGetAppReleaseInfo(server: McpServer): void;
3
+ //# sourceMappingURL=get-app-release-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-release-info.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-app-release-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QAyF1D"}