{"server":{"name":"io.github.app-kit-dev/mcp","title":"App-Kit","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://mcp.app-kit.dev/mcp","type":"streamable-http","headers":[{"name":"Authorization","isSecret":true,"description":"Optional. Free token from https://app-kit.dev/mcp for higher limits, as 'Bearer mcpf_...'."}]}],"version":"0.1.3","repository":{"url":"https://github.com/app-kit-dev/mcp","source":"github"},"websiteUrl":"https://app-kit.dev/mcp","description":"SEO audit (400 checks), text readability and grammar check, PDF to images, image conversion."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-10-05T06:51:20.258902Z","publishedAt":"2026-10-05T06:51:20.258902Z","statusChangedAt":"2026-10-05T06:51:20.258902Z"},"dev.protogrid/connectability":{"class":"R0","autonomous":true,"human_steps":[],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://mcp.app-kit.dev/mcp","transport":"streamable-http","templated":false,"headers":[{"name":"Authorization","required":false,"secret":true,"value":null,"secret_names":["APP_KIT_DEV_TOKEN"]}],"auth":{"type":"none","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":["2026-07-28"],"stateless":true},"health":{"reachable":true,"uptime_30d":0.96428573,"latency_ms_p50":740,"consecutive_failures":0,"last_probe_at":"2026-10-19T17:00:09.448Z","last_ok_at":"2026-10-19T17:00:09.448Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"conversion_status","title":"Статус конвертации (App-Kit)","description":"Статус и результат конвертации по handle из pdf_to_images / images_to_pdf / image_convert.\nБесплатно, квоту не тратит. Пока status=running — повторите через poll_after_s секунд.\nhandle действует 1 час и только для того, кто запустил конвертацию.","annotations":{"title":"Статус конвертации (App-Kit)","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T17:00:09.448Z"},{"name":"create_upload","title":"Загрузка файла (App-Kit)","description":"Создать одноразовую ссылку загрузки файла (для клиентов с доступом к локальным файлам: Claude Code, Cursor).\n\nВернёт upload_id, put_url и команду curl: загрузите файл одним PUT (до 20 МБ,\nза 10 мин), затем передайте upload_id в файловый tool. Один upload_id — один вызов.\nФайл с публичного адреса передавайте сразу как source_url, без загрузки.\nБесплатно: 10 в час анонимно, 30 в час с бесплатным токеном.","annotations":{"title":"Загрузка файла (App-Kit)","readOnlyHint":true,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T17:00:09.448Z"},{"name":"image_convert","title":"Конвертация картинки (App-Kit)","description":"Сменить формат картинки: target_format png/jpeg/webp/bmp/tiff/gif, quality 1–100, max_dim\n(уменьшить длинную сторону). Файл до 20 МБ. Для avif и максимального сжатия — image_compress.\nВход — ровно один: source_url (публичный URL, шлюз скачает сам), upload_id (create_upload → PUT) или data_base64 (до 512 КБ).\nРезультат — ссылки на скачивание (resource_link, действуют 10 мин; когда скачаны все файлы задания, они удаляются) и превью первой картинки. Если за 60 с не готово — status=running и handle: зовите conversion_status(handle).\nБесплатно: 5 в час анонимно, 20 в час с бесплатным токеном (остаток — quota_status).","annotations":{"title":"Конвертация картинки (App-Kit)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T17:00:09.448Z"},{"name":"images_to_pdf","title":"Картинки → PDF (App-Kit)","description":"Собрать картинки в один PDF (по картинке на страницу), page_size A4/Letter или по размеру картинки.\nВход: source_urls[] или upload_ids[] — до 20 файлов, каждый до 20 МБ.\nРезультат — ссылки на скачивание (resource_link, действуют 10 мин; когда скачаны все файлы задания, они удаляются) и превью первой картинки. Если за 60 с не готово — status=running и handle: зовите conversion_status(handle).\nБесплатно: 3 в час анонимно, 10 в час с бесплатным токеном (остаток — quota_status).","annotations":{"title":"Картинки → PDF (App-Kit)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T17:00:09.448Z"},{"name":"pdf_to_images","title":"PDF → картинки (App-Kit)","description":"Конвертировать PDF в картинки (по странице на файл): format png/jpeg/webp, dpi 72–300,\nfirst_page/last_page. PDF до 20 МБ и до 20 страниц.\nВход — ровно один: source_url (публичный URL, шлюз скачает сам), upload_id (create_upload → PUT) или data_base64 (до 512 КБ).\nРезультат — ссылки на скачивание (resource_link, действуют 10 мин; когда скачаны все файлы задания, они удаляются) и превью первой картинки. Если за 60 с не готово — status=running и handle: зовите conversion_status(handle).\nБесплатно: 3 в час анонимно, 10 в час с бесплатным токеном (остаток — quota_status).","annotations":{"title":"PDF → картинки (App-Kit)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T17:00:09.448Z"},{"name":"quota_status","title":"Лимиты App-Kit MCP","description":"Показать уровень доступа и остатки бесплатных лимитов по каждому tool.\n\nУровни: L0 — аноним, L1 — бесплатный токен (app-kit.dev/mcp), L3 — ключ App-Kit API. Бесплатно, квоту не тратит.","annotations":{"title":"Лимиты App-Kit MCP","readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T17:00:09.448Z"},{"name":"seo_audit_fast","title":"Быстрый SEO-аудит (App-Kit)","description":"Быстрый SEO-аудит сайта (до 10 страниц): оценка 0–100 по группам канона, проваленные проверки, топ-5 потерь.\n\nАудируется корень сайта: путь и параметры URL отбрасываются (https://site.ru/page?x=1 → https://site.ru/).\nЖдёт результат до 60 с, присылая progress. Если не успел — вернёт status=running\nи handle: тогда вызовите seo_audit_status(handle) через poll_after_s секунд, пока status=running.\nБесплатно: 5 в час анонимно, 10 в час\nс бесплатным токеном; один домен — до 20 аудитов в сутки (остаток — quota_status).","annotations":{"title":"Быстрый SEO-аудит (App-Kit)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T17:00:09.448Z"},{"name":"seo_audit_status","title":"Статус SEO-аудита (App-Kit)","description":"Статус и результат SEO-аудита по handle из seo_audit_fast / seo_audit_full_start. Бесплатно, квоту не тратит.\n\nПока status=running — повторите через poll_after_s секунд. handle действует\n60 мин и только для того, кто запустил аудит.","annotations":{"title":"Статус SEO-аудита (App-Kit)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T17:00:09.448Z"},{"name":"text_check","title":"Проверка текста (App-Kit)","description":"Проверить текст: метрики (вода, спам, тошнота), читаемость, стоп-фразы, грамматика.\n\nВход: text до 20000 символов, lang ru/en. Возвращает passed (обязательные пороги),\nметрики по слоям, вердикты (blocking=false — рекомендация), top_issues (до 5 главных проблем)\nи locations — координаты замечаний (offset/length) в присланном тексте. Текст не сохраняется.\nБесплатно: 10 в час анонимно, 20 в час с бесплатным токеном (остаток — quota_status).","annotations":{"title":"Проверка текста (App-Kit)","readOnlyHint":true,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T17:00:09.448Z"}],"dev.protogrid/trust":{"score":97,"components":{"hygiene":100,"liveness":99,"freshness":100,"provenance":90},"drivers":["+repository","+namespace-matches-repo","+website","+reachable","+uptime-96%","+updated-15d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T22:36:37.560Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":96,"label":"strong","components":{"auth":null,"hygiene":100,"protocol":88,"stability":100,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"supports 2026-07-28 (server/discover)","status":"pass","category":"protocol"},{"id":"protocol.stateless","detail":"answers without a session","status":"pass","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"tools/list declares ttlMs 0, so clients re-fetch it on every use","status":"warn","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"9 of 9 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint","status":"pass","category":"hygiene"},{"id":"tools.token_cost","detail":"about 2,364 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"no tool changes in 30 days","status":"pass","category":"stability"},{"id":"stability.rug_pull","detail":"no tool changed its meaning under the same name","status":"pass","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":["~protocol.list_ttl"],"flags":[],"tool_count":9,"token_estimate":2364,"tools_hash":"990b7cda0cb9f048362e2b952f68b36f","tools_changed_at":null,"computed_at":"2026-10-19T22:46:05.077Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"io.github.app-kit-dev/mcp","aliases":[],"alias_count":0,"repository_key":"github:app-kit-dev/mcp","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/io.github.app-kit-dev%2Fmcp/tools","arguments":{"name":"io.github.app-kit-dev/mcp"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/io.github.app-kit-dev%2Fmcp/connection?target=mcpServers","arguments":{"name":"io.github.app-kit-dev/mcp","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}