App-Kit
SEO audit (400 checks), text readability and grammar check, PDF to images, image conversion.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (3)
- HIGH
- MEDIUMen seo_audit_fast
- LOWen quota_status
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"mcp": {
"url": "https://mcp.app-kit.dev/mcp"
}
}
}Puntos de conexión remotos
https://mcp.app-kit.dev/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (9)
🟢text_check(text, lang, layers)
Проверить текст: метрики (вода, спам, тошнота), читаемость, стоп-фразы, грамматика. Вход: text до 20000 символов, lang ru/en. Возвращает passed (обязательные пороги), метрики по слоям, вердикты (blocking=false — рекомендация), top_issues (до 5 главных проблем) и locations — координаты замечаний (offset/length) в присланном тексте. Текст не сохраняется. Бесплатно: 10 в час анонимно, 20 в час с бесплатным токеном (остаток — quota_status).
Esquema de entrada
{
"type": "object",
"properties": {
"text": {
"description": "Текст для проверки, до 20000 символов",
"title": "Text",
"type": "string"
},
"lang": {
"default": "ru",
"description": "Язык текста",
"enum": [
"ru",
"en"
],
"title": "Lang",
"type": "string"
},
"layers": {
"anyOf": [
{
"items": {
"enum": [
"metrics",
"readability",
"phrases",
"grammar"
],
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Слои: metrics, readability, phrases, grammar (по умолчанию все)",
"title": "Layers"
}
},
"required": [
"text"
],
"title": "text_checkArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"passed": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Прошёл ли текст все блокирующие пороги профиля",
"title": "Passed"
},
"lang": {
"title": "Lang",
"type": "string"
},
"layers": {
"additionalProperties": {
"additionalProperties": true,
"type": "object"
},
"description": "Метрики по слоям (только числа/статусы, без фрагментов текста)",
"title": "Layers",
"type": "object"
},
"verdicts": {
"items": {
"$ref": "#/$defs/Verdict"
},
"title": "Verdicts",
"type": "array"
},
"top_issues": {
"description": "До 5 главных проблем: сначала блокирующие fail",
"items": {
"$ref": "#/$defs/Verdict"
},
"title": "Top Issues",
"type": "array"
},
"locations": {
"description": "До 10 координат замечаний (грамматика, стоп-фразы): offset/length в присланном тексте",
"items": {
"$ref": "#/$defs/IssueLocation"
},
"title": "Locations",
"type": "array"
},
"quota": {
"$ref": "#/$defs/Quota"
}
},
"required": [
"passed",
"lang",
"layers",
"verdicts",
"top_issues",
"quota"
],
"$defs": {
"IssueLocation": {
"description": "Где в присланном тексте замечание: только координаты, без фрагментов текста.",
"properties": {
"layer": {
"enum": [
"grammar",
"phrases"
],
"title": "Layer",
"type": "string"
},
"offset": {
"description": "Смещение в символах от начала текста",
"title": "Offset",
"type": "integer"
},
"length": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Длина фрагмента в символах (если известна)",
"title": "Length"
},
"rule": {
"description": "grammar — id правила LanguageTool; phrases — стоп-фраза из списка App-Kit",
"title": "Rule",
"type": "string"
}
},
"required": [
"layer",
"offset",
"rule"
],
"title": "IssueLocation",
"type": "object"
},
"Quota": {
"properties": {
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Сколько вызовов осталось в самом узком окне; null — без лимита",
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Когда окно сбросится (UTC, ISO 8601)",
"title": "Reset At"
},
"tier": {
"description": "Уровень доступа: L0 аноним, L1 бесплатный токен, L3 ключ API",
"title": "Tier",
"type": "string"
},
"upgrade_url": {
"description": "Где получить бесплатный токен или ключ",
"title": "Upgrade Url",
"type": "string"
},
"domain_remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Сколько аудитов этого домена осталось на сутки (только seo-audit); null — не применимо",
"title": "Domain Remaining"
}
},
"required": [
"remaining",
"reset_at",
"tier",
"upgrade_url"
],
"title": "Quota",
"type": "object"
},
"Verdict": {
"properties": {
"metric": {
"title": "Metric",
"type": "string"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Label"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "integer"
},
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Value"
},
"threshold": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Threshold"
},
"result": {
"description": "pass | fail | unknown",
"title": "Result",
"type": "string"
},
"blocking": {
"default": false,
"title": "Blocking",
"type": "boolean"
}
},
"required": [
"metric",
"result"
],
"title": "Verdict",
"type": "object"
}
},
"title": "TextCheckOut"
}🟢seo_audit_fast(url, lang)
Быстрый SEO-аудит сайта (до 10 страниц): оценка 0–100 по группам канона, проваленные проверки, топ-5 потерь. Аудируется корень сайта: путь и параметры URL отбрасываются (https://site.ru/page?x=1 → https://site.ru/). Ждёт результат до 60 с, присылая progress. Если не успел — вернёт status=running и handle: тогда вызовите seo_audit_status(handle) через poll_after_s секунд, пока status=running. Бесплатно: 5 в час анонимно, 10 в час с бесплатным токеном; один домен — до 20 аудитов в сутки (остаток — quota_status).
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"description": "Адрес публичного сайта, например https://example.com (аудируется корень)",
"title": "Url",
"type": "string"
},
"lang": {
"default": "ru",
"description": "Язык названий проверок",
"enum": [
"ru",
"en"
],
"title": "Lang",
"type": "string"
}
},
"required": [
"url"
],
"title": "seo_audit_fastArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"enum": [
"done",
"running",
"failed"
],
"title": "Status",
"type": "string"
},
"mode": {
"enum": [
"fast",
"full"
],
"title": "Mode",
"type": "string"
},
"stage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "queued → crawl → analyze → report → done",
"title": "Stage"
},
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Domain"
},
"handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Передайте в seo_audit_status, пока status=running",
"title": "Handle"
},
"poll_after_s": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Poll After S"
},
"score": {
"anyOf": [
{
"$ref": "#/$defs/Score"
},
{
"type": "null"
}
],
"default": null
},
"checks": {
"description": "Только проваленные проверки (до 100)",
"items": {
"$ref": "#/$defs/FailedCheck"
},
"title": "Checks",
"type": "array"
},
"checks_failed_total": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Checks Failed Total"
},
"top_losses": {
"description": "До 5 проверок с наибольшей потерей балла",
"items": {
"$ref": "#/$defs/Loss"
},
"title": "Top Losses",
"type": "array"
},
"report_link": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "PDF-отчёт — только по ключу App-Kit API",
"title": "Report Link"
},
"quota": {
"$ref": "#/$defs/Quota"
}
},
"required": [
"status",
"mode",
"quota"
],
"$defs": {
"FailedCheck": {
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"group": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Group"
},
"priority": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Priority"
},
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"id",
"status"
],
"title": "FailedCheck",
"type": "object"
},
"Loss": {
"properties": {
"check_id": {
"title": "Check Id",
"type": "string"
},
"group": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Group"
},
"priority": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Priority"
},
"lost": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Потерянный вес проверки",
"title": "Lost"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Название проверки из канона App-Kit (не текст страницы)",
"title": "Title"
}
},
"required": [
"check_id"
],
"title": "Loss",
"type": "object"
},
"Quota": {
"properties": {
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Сколько вызовов осталось в самом узком окне; null — без лимита",
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Когда окно сбросится (UTC, ISO 8601)",
"title": "Reset At"
},
"tier": {
"description": "Уровень доступа: L0 аноним, L1 бесплатный токен, L3 ключ API",
"title": "Tier",
"type": "string"
},
"upgrade_url": {
"description": "Где получить бесплатный токен или ключ",
"title": "Upgrade Url",
"type": "string"
},
"domain_remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Сколько аудитов этого домена осталось на сутки (только seo-audit); null — не применимо",
"title": "Domain Remaining"
}
},
"required": [
"remaining",
"reset_at",
"tier",
"upgrade_url"
],
"title": "Quota",
"type": "object"
},
"Score": {
"properties": {
"overall": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Overall"
},
"groups": {
"additionalProperties": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"description": "Оценка 0–100 по группам канона",
"title": "Groups",
"type": "object"
}
},
"required": [
"overall",
"groups"
],
"title": "Score",
"type": "object"
}
},
"title": "SeoAuditOut"
}🟢seo_audit_status(handle)
Статус и результат SEO-аудита по handle из seo_audit_fast / seo_audit_full_start. Бесплатно, квоту не тратит. Пока status=running — повторите через poll_after_s секунд. handle действует 60 мин и только для того, кто запустил аудит.
Esquema de entrada
{
"type": "object",
"properties": {
"handle": {
"description": "handle из seo_audit_fast / seo_audit_full_start",
"title": "Handle",
"type": "string"
}
},
"required": [
"handle"
],
"title": "seo_audit_statusArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"enum": [
"done",
"running",
"failed"
],
"title": "Status",
"type": "string"
},
"mode": {
"enum": [
"fast",
"full"
],
"title": "Mode",
"type": "string"
},
"stage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "queued → crawl → analyze → report → done",
"title": "Stage"
},
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Domain"
},
"handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Передайте в seo_audit_status, пока status=running",
"title": "Handle"
},
"poll_after_s": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Poll After S"
},
"score": {
"anyOf": [
{
"$ref": "#/$defs/Score"
},
{
"type": "null"
}
],
"default": null
},
"checks": {
"description": "Только проваленные проверки (до 100)",
"items": {
"$ref": "#/$defs/FailedCheck"
},
"title": "Checks",
"type": "array"
},
"checks_failed_total": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Checks Failed Total"
},
"top_losses": {
"description": "До 5 проверок с наибольшей потерей балла",
"items": {
"$ref": "#/$defs/Loss"
},
"title": "Top Losses",
"type": "array"
},
"report_link": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "PDF-отчёт — только по ключу App-Kit API",
"title": "Report Link"
},
"quota": {
"$ref": "#/$defs/Quota"
}
},
"required": [
"status",
"mode",
"quota"
],
"$defs": {
"FailedCheck": {
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"group": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Group"
},
"priority": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Priority"
},
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"id",
"status"
],
"title": "FailedCheck",
"type": "object"
},
"Loss": {
"properties": {
"check_id": {
"title": "Check Id",
"type": "string"
},
"group": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Group"
},
"priority": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Priority"
},
"lost": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Потерянный вес проверки",
"title": "Lost"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Название проверки из канона App-Kit (не текст страницы)",
"title": "Title"
}
},
"required": [
"check_id"
],
"title": "Loss",
"type": "object"
},
"Quota": {
"properties": {
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Сколько вызовов осталось в самом узком окне; null — без лимита",
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Когда окно сбросится (UTC, ISO 8601)",
"title": "Reset At"
},
"tier": {
"description": "Уровень доступа: L0 аноним, L1 бесплатный токен, L3 ключ API",
"title": "Tier",
"type": "string"
},
"upgrade_url": {
"description": "Где получить бесплатный токен или ключ",
"title": "Upgrade Url",
"type": "string"
},
"domain_remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Сколько аудитов этого домена осталось на сутки (только seo-audit); null — не применимо",
"title": "Domain Remaining"
}
},
"required": [
"remaining",
"reset_at",
"tier",
"upgrade_url"
],
"title": "Quota",
"type": "object"
},
"Score": {
"properties": {
"overall": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Overall"
},
"groups": {
"additionalProperties": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"description": "Оценка 0–100 по группам канона",
"title": "Groups",
"type": "object"
}
},
"required": [
"overall",
"groups"
],
"title": "Score",
"type": "object"
}
},
"title": "SeoAuditOut"
}🟢pdf_to_images(source_url, upload_id, data_base64, format, dpi, ...)
Конвертировать PDF в картинки (по странице на файл): format png/jpeg/webp, dpi 72–300, first_page/last_page. PDF до 20 МБ и до 20 страниц. Вход — ровно один: source_url (публичный URL, шлюз скачает сам), upload_id (create_upload → PUT) или data_base64 (до 512 КБ). Результат — ссылки на скачивание (resource_link, действуют 10 мин; когда скачаны все файлы задания, они удаляются) и превью первой картинки. Если за 60 с не готово — status=running и handle: зовите conversion_status(handle). Бесплатно: 3 в час анонимно, 10 в час с бесплатным токеном (остаток — quota_status).
Esquema de entrada
{
"type": "object",
"properties": {
"source_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Публичный URL файла (шлюз скачает сам). Основной путь для Claude.ai",
"title": "Source Url"
},
"upload_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "upload_id из create_upload (после PUT файла)",
"title": "Upload Id"
},
"data_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Файл в base64 — только для маленьких файлов (до 512 КБ)",
"title": "Data Base64"
},
"format": {
"default": "png",
"description": "Формат страниц",
"enum": [
"png",
"jpeg",
"webp"
],
"title": "Format",
"type": "string"
},
"dpi": {
"default": 150,
"description": "Разрешение 72–300",
"maximum": 300,
"minimum": 72,
"title": "Dpi",
"type": "integer"
},
"first_page": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Первая страница (с 1)",
"title": "First Page"
},
"last_page": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Последняя страница",
"title": "Last Page"
}
},
"title": "pdf_to_imagesArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"enum": [
"done",
"running"
],
"title": "Status",
"type": "string"
},
"tool": {
"title": "Tool",
"type": "string"
},
"handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Передайте в conversion_status, пока status=running",
"title": "Handle"
},
"poll_after_s": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Poll After S"
},
"pages": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Число выходных файлов/страниц",
"title": "Pages"
},
"files": {
"items": {
"$ref": "#/$defs/OutFile"
},
"title": "Files",
"type": "array"
},
"bytes_out": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Bytes Out"
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "До какого момента действуют ссылки (UTC)",
"title": "Expires At"
},
"quota": {
"$ref": "#/$defs/Quota"
}
},
"required": [
"status",
"tool",
"quota"
],
"$defs": {
"OutFile": {
"properties": {
"n": {
"description": "Номер выхода с 1 (страница/файл)",
"title": "N",
"type": "integer"
},
"url": {
"description": "Ссылка на скачивание (действует до expires_at; после скачивания файлы удаляются)",
"title": "Url",
"type": "string"
},
"content_type": {
"title": "Content Type",
"type": "string"
},
"filename": {
"title": "Filename",
"type": "string"
},
"bytes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Bytes"
}
},
"required": [
"n",
"url",
"content_type",
"filename"
],
"title": "OutFile",
"type": "object"
},
"Quota": {
"properties": {
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Сколько вызовов осталось в самом узком окне; null — без лимита",
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Когда окно сбросится (UTC, ISO 8601)",
"title": "Reset At"
},
"tier": {
"description": "Уровень доступа: L0 аноним, L1 бесплатный токен, L3 ключ API",
"title": "Tier",
"type": "string"
},
"upgrade_url": {
"description": "Где получить бесплатный токен или ключ",
"title": "Upgrade Url",
"type": "string"
},
"domain_remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Сколько аудитов этого домена осталось на сутки (только seo-audit); null — не применимо",
"title": "Domain Remaining"
}
},
"required": [
"remaining",
"reset_at",
"tier",
"upgrade_url"
],
"title": "Quota",
"type": "object"
}
},
"title": "ConversionOut"
}🟢images_to_pdf(source_urls, upload_ids, page_size)
Собрать картинки в один PDF (по картинке на страницу), page_size A4/Letter или по размеру картинки. Вход: source_urls[] или upload_ids[] — до 20 файлов, каждый до 20 МБ. Результат — ссылки на скачивание (resource_link, действуют 10 мин; когда скачаны все файлы задания, они удаляются) и превью первой картинки. Если за 60 с не готово — status=running и handle: зовите conversion_status(handle). Бесплатно: 3 в час анонимно, 10 в час с бесплатным токеном (остаток — quota_status).
Esquema de entrada
{
"type": "object",
"properties": {
"source_urls": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Публичные URL картинок, по порядку страниц",
"title": "Source Urls"
},
"upload_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "upload_id картинок из create_upload, по порядку",
"title": "Upload Ids"
},
"page_size": {
"anyOf": [
{
"enum": [
"A4",
"Letter"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Размер страницы; не задан — по размеру картинки",
"title": "Page Size"
}
},
"title": "images_to_pdfArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"enum": [
"done",
"running"
],
"title": "Status",
"type": "string"
},
"tool": {
"title": "Tool",
"type": "string"
},
"handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Передайте в conversion_status, пока status=running",
"title": "Handle"
},
"poll_after_s": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Poll After S"
},
"pages": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Число выходных файлов/страниц",
"title": "Pages"
},
"files": {
"items": {
"$ref": "#/$defs/OutFile"
},
"title": "Files",
"type": "array"
},
"bytes_out": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Bytes Out"
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "До какого момента действуют ссылки (UTC)",
"title": "Expires At"
},
"quota": {
"$ref": "#/$defs/Quota"
}
},
"required": [
"status",
"tool",
"quota"
],
"$defs": {
"OutFile": {
"properties": {
"n": {
"description": "Номер выхода с 1 (страница/файл)",
"title": "N",
"type": "integer"
},
"url": {
"description": "Ссылка на скачивание (действует до expires_at; после скачивания файлы удаляются)",
"title": "Url",
"type": "string"
},
"content_type": {
"title": "Content Type",
"type": "string"
},
"filename": {
"title": "Filename",
"type": "string"
},
"bytes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Bytes"
}
},
"required": [
"n",
"url",
"content_type",
"filename"
],
"title": "OutFile",
"type": "object"
},
"Quota": {
"properties": {
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Сколько вызовов осталось в самом узком окне; null — без лимита",
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Когда окно сбросится (UTC, ISO 8601)",
"title": "Reset At"
},
"tier": {
"description": "Уровень доступа: L0 аноним, L1 бесплатный токен, L3 ключ API",
"title": "Tier",
"type": "string"
},
"upgrade_url": {
"description": "Где получить бесплатный токен или ключ",
"title": "Upgrade Url",
"type": "string"
},
"domain_remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Сколько аудитов этого домена осталось на сутки (только seo-audit); null — не применимо",
"title": "Domain Remaining"
}
},
"required": [
"remaining",
"reset_at",
"tier",
"upgrade_url"
],
"title": "Quota",
"type": "object"
}
},
"title": "ConversionOut"
}🟢image_convert(target_format, source_url, upload_id, data_base64, quality, ...)
Сменить формат картинки: target_format png/jpeg/webp/bmp/tiff/gif, quality 1–100, max_dim (уменьшить длинную сторону). Файл до 20 МБ. Для avif и максимального сжатия — image_compress. Вход — ровно один: source_url (публичный URL, шлюз скачает сам), upload_id (create_upload → PUT) или data_base64 (до 512 КБ). Результат — ссылки на скачивание (resource_link, действуют 10 мин; когда скачаны все файлы задания, они удаляются) и превью первой картинки. Если за 60 с не готово — status=running и handle: зовите conversion_status(handle). Бесплатно: 5 в час анонимно, 20 в час с бесплатным токеном (остаток — quota_status).
Esquema de entrada
{
"type": "object",
"properties": {
"target_format": {
"description": "Целевой формат",
"enum": [
"png",
"jpeg",
"webp",
"bmp",
"tiff",
"gif"
],
"title": "Target Format",
"type": "string"
},
"source_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Публичный URL файла (шлюз скачает сам). Основной путь для Claude.ai",
"title": "Source Url"
},
"upload_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "upload_id из create_upload (после PUT файла)",
"title": "Upload Id"
},
"data_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Файл в base64 — только для маленьких файлов (до 512 КБ)",
"title": "Data Base64"
},
"quality": {
"default": 90,
"description": "Качество 1–100 (jpeg/webp)",
"maximum": 100,
"minimum": 1,
"title": "Quality",
"type": "integer"
},
"max_dim": {
"anyOf": [
{
"maximum": 10000,
"minimum": 16,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Уменьшить длинную сторону до N px",
"title": "Max Dim"
}
},
"required": [
"target_format"
],
"title": "image_convertArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"enum": [
"done",
"running"
],
"title": "Status",
"type": "string"
},
"tool": {
"title": "Tool",
"type": "string"
},
"handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Передайте в conversion_status, пока status=running",
"title": "Handle"
},
"poll_after_s": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Poll After S"
},
"pages": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Число выходных файлов/страниц",
"title": "Pages"
},
"files": {
"items": {
"$ref": "#/$defs/OutFile"
},
"title": "Files",
"type": "array"
},
"bytes_out": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Bytes Out"
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "До какого момента действуют ссылки (UTC)",
"title": "Expires At"
},
"quota": {
"$ref": "#/$defs/Quota"
}
},
"required": [
"status",
"tool",
"quota"
],
"$defs": {
"OutFile": {
"properties": {
"n": {
"description": "Номер выхода с 1 (страница/файл)",
"title": "N",
"type": "integer"
},
"url": {
"description": "Ссылка на скачивание (действует до expires_at; после скачивания файлы удаляются)",
"title": "Url",
"type": "string"
},
"content_type": {
"title": "Content Type",
"type": "string"
},
"filename": {
"title": "Filename",
"type": "string"
},
"bytes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Bytes"
}
},
"required": [
"n",
"url",
"content_type",
"filename"
],
"title": "OutFile",
"type": "object"
},
"Quota": {
"properties": {
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Сколько вызовов осталось в самом узком окне; null — без лимита",
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Когда окно сбросится (UTC, ISO 8601)",
"title": "Reset At"
},
"tier": {
"description": "Уровень доступа: L0 аноним, L1 бесплатный токен, L3 ключ API",
"title": "Tier",
"type": "string"
},
"upgrade_url": {
"description": "Где получить бесплатный токен или ключ",
"title": "Upgrade Url",
"type": "string"
},
"domain_remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Сколько аудитов этого домена осталось на сутки (только seo-audit); null — не применимо",
"title": "Domain Remaining"
}
},
"required": [
"remaining",
"reset_at",
"tier",
"upgrade_url"
],
"title": "Quota",
"type": "object"
}
},
"title": "ConversionOut"
}🟢conversion_status(handle)
Статус и результат конвертации по handle из pdf_to_images / images_to_pdf / image_convert. Бесплатно, квоту не тратит. Пока status=running — повторите через poll_after_s секунд. handle действует 1 час и только для того, кто запустил конвертацию.
Esquema de entrada
{
"type": "object",
"properties": {
"handle": {
"description": "handle из pdf_to_images / images_to_pdf / image_convert",
"title": "Handle",
"type": "string"
}
},
"required": [
"handle"
],
"title": "conversion_statusArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"enum": [
"done",
"running"
],
"title": "Status",
"type": "string"
},
"tool": {
"title": "Tool",
"type": "string"
},
"handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Передайте в conversion_status, пока status=running",
"title": "Handle"
},
"poll_after_s": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Poll After S"
},
"pages": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Число выходных файлов/страниц",
"title": "Pages"
},
"files": {
"items": {
"$ref": "#/$defs/OutFile"
},
"title": "Files",
"type": "array"
},
"bytes_out": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Bytes Out"
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "До какого момента действуют ссылки (UTC)",
"title": "Expires At"
},
"quota": {
"$ref": "#/$defs/Quota"
}
},
"required": [
"status",
"tool",
"quota"
],
"$defs": {
"OutFile": {
"properties": {
"n": {
"description": "Номер выхода с 1 (страница/файл)",
"title": "N",
"type": "integer"
},
"url": {
"description": "Ссылка на скачивание (действует до expires_at; после скачивания файлы удаляются)",
"title": "Url",
"type": "string"
},
"content_type": {
"title": "Content Type",
"type": "string"
},
"filename": {
"title": "Filename",
"type": "string"
},
"bytes": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Bytes"
}
},
"required": [
"n",
"url",
"content_type",
"filename"
],
"title": "OutFile",
"type": "object"
},
"Quota": {
"properties": {
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Сколько вызовов осталось в самом узком окне; null — без лимита",
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Когда окно сбросится (UTC, ISO 8601)",
"title": "Reset At"
},
"tier": {
"description": "Уровень доступа: L0 аноним, L1 бесплатный токен, L3 ключ API",
"title": "Tier",
"type": "string"
},
"upgrade_url": {
"description": "Где получить бесплатный токен или ключ",
"title": "Upgrade Url",
"type": "string"
},
"domain_remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Сколько аудитов этого домена осталось на сутки (только seo-audit); null — не применимо",
"title": "Domain Remaining"
}
},
"required": [
"remaining",
"reset_at",
"tier",
"upgrade_url"
],
"title": "Quota",
"type": "object"
}
},
"title": "ConversionOut"
}🟢create_upload(filename, size, content_type)
Создать одноразовую ссылку загрузки файла (для клиентов с доступом к локальным файлам: Claude Code, Cursor). Вернёт upload_id, put_url и команду curl: загрузите файл одним PUT (до 20 МБ, за 10 мин), затем передайте upload_id в файловый tool. Один upload_id — один вызов. Файл с публичного адреса передавайте сразу как source_url, без загрузки. Бесплатно: 10 в час анонимно, 30 в час с бесплатным токеном.
Esquema de entrada
{
"type": "object",
"properties": {
"filename": {
"description": "Имя файла, например report.pdf",
"maxLength": 200,
"title": "Filename",
"type": "string"
},
"size": {
"description": "Размер файла в байтах",
"exclusiveMinimum": 0,
"title": "Size",
"type": "integer"
},
"content_type": {
"default": "application/octet-stream",
"description": "MIME-тип, например application/pdf или image/png",
"title": "Content Type",
"type": "string"
}
},
"required": [
"filename",
"size"
],
"title": "create_uploadArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"upload_id": {
"description": "Передайте в pdf_to_images / images_to_pdf / image_convert / image_compress",
"title": "Upload Id",
"type": "string"
},
"put_url": {
"description": "Куда загрузить файл одним PUT (тело — сырые байты файла)",
"title": "Put Url",
"type": "string"
},
"expires_at": {
"description": "До какого момента нужно загрузить и использовать файл (UTC)",
"title": "Expires At",
"type": "string"
},
"max_bytes": {
"title": "Max Bytes",
"type": "integer"
},
"curl": {
"description": "Готовая команда загрузки",
"title": "Curl",
"type": "string"
},
"quota": {
"$ref": "#/$defs/Quota"
}
},
"required": [
"upload_id",
"put_url",
"expires_at",
"max_bytes",
"curl",
"quota"
],
"$defs": {
"Quota": {
"properties": {
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Сколько вызовов осталось в самом узком окне; null — без лимита",
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Когда окно сбросится (UTC, ISO 8601)",
"title": "Reset At"
},
"tier": {
"description": "Уровень доступа: L0 аноним, L1 бесплатный токен, L3 ключ API",
"title": "Tier",
"type": "string"
},
"upgrade_url": {
"description": "Где получить бесплатный токен или ключ",
"title": "Upgrade Url",
"type": "string"
},
"domain_remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Сколько аудитов этого домена осталось на сутки (только seo-audit); null — не применимо",
"title": "Domain Remaining"
}
},
"required": [
"remaining",
"reset_at",
"tier",
"upgrade_url"
],
"title": "Quota",
"type": "object"
}
},
"title": "CreateUploadOut"
}🟢quota_status
Показать уровень доступа и остатки бесплатных лимитов по каждому tool. Уровни: L0 — аноним, L1 — бесплатный токен (app-kit.dev/mcp), L3 — ключ App-Kit API. Бесплатно, квоту не тратит.
Esquema de entrada
{
"type": "object",
"properties": {},
"title": "quota_statusArguments"
}Esquema de salida
{
"type": "object",
"properties": {
"tier": {
"title": "Tier",
"type": "string"
},
"tools": {
"items": {
"$ref": "#/$defs/ToolQuota"
},
"title": "Tools",
"type": "array"
},
"upgrade_url": {
"title": "Upgrade Url",
"type": "string"
},
"quota": {
"$ref": "#/$defs/Quota"
}
},
"required": [
"tier",
"tools",
"upgrade_url",
"quota"
],
"$defs": {
"Quota": {
"properties": {
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Сколько вызовов осталось в самом узком окне; null — без лимита",
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Когда окно сбросится (UTC, ISO 8601)",
"title": "Reset At"
},
"tier": {
"description": "Уровень доступа: L0 аноним, L1 бесплатный токен, L3 ключ API",
"title": "Tier",
"type": "string"
},
"upgrade_url": {
"description": "Где получить бесплатный токен или ключ",
"title": "Upgrade Url",
"type": "string"
},
"domain_remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Сколько аудитов этого домена осталось на сутки (только seo-audit); null — не применимо",
"title": "Domain Remaining"
}
},
"required": [
"remaining",
"reset_at",
"tier",
"upgrade_url"
],
"title": "Quota",
"type": "object"
},
"ToolQuota": {
"properties": {
"tool": {
"title": "Tool",
"type": "string"
},
"available": {
"description": "Доступен ли tool на текущем уровне",
"title": "Available",
"type": "boolean"
},
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Remaining"
},
"reset_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Reset At"
},
"limits": {
"additionalProperties": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"description": "Лимиты уровня: per_hour, per_day, global_per_day, domain_per_day",
"title": "Limits",
"type": "object"
}
},
"required": [
"tool",
"available",
"remaining",
"reset_at",
"limits"
],
"title": "ToolQuota",
"type": "object"
}
},
"title": "QuotaStatusOut"
}Comunidad
Evidencia