App-Kit

SEO audit (400 checks), text readability and grammar check, PDF to images, image conversion.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
97%
Vollständigkeit des Schemas
84%
Qualität der Benennung
82%
Risiko der Vergiftung
80%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin seo_audit_fast
  • LOWTool 'quota_status' description lacks action verbin quota_status

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~9,353Tokens (Tool-Definitionen)
~8.8 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (7.31% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.app-kit.dev/mcp"
    }
  }
}

Remote-Endpunkte

https://mcp.app-kit.dev/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (9)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢text_check(text, lang, layers)

Проверить текст: метрики (вода, спам, тошнота), читаемость, стоп-фразы, грамматика. Вход: text до 20000 символов, lang ru/en. Возвращает passed (обязательные пороги), метрики по слоям, вердикты (blocking=false — рекомендация), top_issues (до 5 главных проблем) и locations — координаты замечаний (offset/length) в присланном тексте. Текст не сохраняется. Бесплатно: 10 в час анонимно, 20 в час с бесплатным токеном (остаток — quota_status).

Eingabe-Schema

{
  "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"
}

Ausgabe-Schema

{
  "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).

Eingabe-Schema

{
  "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"
}

Ausgabe-Schema

{
  "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 мин и только для того, кто запустил аудит.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "handle": {
      "description": "handle из seo_audit_fast / seo_audit_full_start",
      "title": "Handle",
      "type": "string"
    }
  },
  "required": [
    "handle"
  ],
  "title": "seo_audit_statusArguments"
}

Ausgabe-Schema

{
  "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).

Eingabe-Schema

{
  "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"
}

Ausgabe-Schema

{
  "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).

Eingabe-Schema

{
  "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"
}

Ausgabe-Schema

{
  "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).

Eingabe-Schema

{
  "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"
}

Ausgabe-Schema

{
  "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 час и только для того, кто запустил конвертацию.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "handle": {
      "description": "handle из pdf_to_images / images_to_pdf / image_convert",
      "title": "Handle",
      "type": "string"
    }
  },
  "required": [
    "handle"
  ],
  "title": "conversion_statusArguments"
}

Ausgabe-Schema

{
  "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 в час с бесплатным токеном.

Eingabe-Schema

{
  "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"
}

Ausgabe-Schema

{
  "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. Бесплатно, квоту не тратит.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "title": "quota_statusArguments"
}

Ausgabe-Schema

{
  "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"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet9 Tools