Skip to main content

App-Kit

io.github.app-kit-dev/mcpVersion 0.1.3

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

Status

Responds229 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:45 UTC
Latency
229 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 21:12 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://mcp.app-kit.dev/mcpResponds229 ms
No sign-in

Claude Code

claude mcp add --transport http app-kit-dev https://mcp.app-kit.dev/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: app-kit-dev
Remote MCP server URL: https://mcp.app-kit.dev/mcp

Cursor

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

VS Code

code --add-mcp '{"name":"app-kit-dev","type":"http","url":"https://mcp.app-kit.dev/mcp"}'

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

10 tools

Tools of App-Kit
Read-only
Idempotent
Open world
conversion_statusStatus and result of a conversion by the handle from pdf_to_images / images_to_pdf / image_convert. Does not consume quota. While status=running, call again after poll_after_s seconds. A handle is valid for 1 hour and only for the caller who started the conversion.NoYesYesNo
create_uploadCreate a one-time upload link for a local file (for clients with local file access, e.g. Claude Code, Cursor). Returns upload_id, put_url and a curl command: upload the file with a single PUT (up to 20 MB, within 10 min), then pass upload_id to a file tool. One upload_id serves one call. For a file at a public URL, pass source_url directly instead. Rate-limited per day; call quota_status for remaining calls.NoNoNoNo
image_compressCompress an existing image to WebP or AVIF: quality 1-100, width/height (downscale), preset (photo/picture/drawing/icon/text), lossless. Returns a result link (valid up to 5 min), original and new size, compression ratio. File up to 20 MB. Input: exactly one of source_url (public URL, the server downloads it), upload_id (create_upload, then PUT) or data_base64 (up to 512 KB). Rate-limited per day; call quota_status for remaining calls.NoYesNoYes
image_convertConvert an existing image to another format: target_format png/jpeg/webp/bmp/tiff/gif, quality 1-100, max_dim (downscale the long side). File up to 20 MB. For avif and maximum compression use image_compress. Input: exactly one of source_url (public URL, the server downloads it), upload_id (create_upload, then PUT) or data_base64 (up to 512 KB). Output: download links (resource_link, valid for 10 min; deleted once all files of the job are downloaded) and a preview of the first image. If not done within 60 s, returns status=running and a handle: call conversion_status(handle). Rate-limited per day; call quota_status for remaining calls.NoYesNoYes
images_to_pdfCombine existing images into one PDF (one image per page), page_size A4/Letter or the image size. Input: source_urls[] or upload_ids[], up to 20 files, each up to 20 MB. Output: download links (resource_link, valid for 10 min; deleted once all files of the job are downloaded) and a preview of the first image. If not done within 60 s, returns status=running and a handle: call conversion_status(handle). Rate-limited per day; call quota_status for remaining calls.NoYesNoYes
pdf_to_imagesConvert an existing PDF to images (one file per page): format png/jpeg/webp, dpi 72-300, first_page/last_page. PDF up to 20 MB and up to 20 pages. Input: exactly one of source_url (public URL, the server downloads it), upload_id (create_upload, then PUT) or data_base64 (up to 512 KB). Output: download links (resource_link, valid for 10 min; deleted once all files of the job are downloaded) and a preview of the first image. If not done within 60 s, returns status=running and a handle: call conversion_status(handle). Rate-limited per day; call quota_status for remaining calls.NoYesNoYes
quota_statusShow the current access tier and the remaining calls for each tool. Tiers: L0 anonymous (shared per platform for Claude and ChatGPT), L1 personal token, L2 App-Kit account (OAuth). Does not consume quota.NoYesYesNo
seo_audit_fastQuick SEO audit of a public website (up to 10 pages): score 0-100 by check group, failed checks, top 5 losses. The site root is audited: URL path and query are dropped (https://example.com/page?x=1 -> https://example.com/). Waits up to 60 s for the result, sending progress. If not done by then, returns status=running and a handle: call seo_audit_status(handle) every poll_after_s seconds while status=running. Rate-limited per day; call quota_status for remaining calls. One domain: up to 5 audits per day.NoYesNoYes
seo_audit_statusStatus and result of an SEO audit by the handle from seo_audit_fast. Does not consume quota. While status=running, call again after poll_after_s seconds. A handle is valid for 60 min and only for the caller who started the audit.NoYesYesYes
text_checkCheck a text: metrics (filler words, spam, keyword stuffing), readability, stop phrases, grammar. Input: text up to 20000 characters, lang (language of the text) ru or en. Returns passed (blocking thresholds), metrics by layer, verdicts (blocking=false means a recommendation), top_issues (up to 5 main issues) and locations: issue positions (offset/length) in the submitted text. The text is not stored. Rate-limited per day; call quota_status for remaining calls.NoYesNoNo

Details

Registry status
Active
Published
Oct 5, 2026
Updated
Oct 5, 2026
Categories (suggested)
DocumentsMarketing and SEOFiles and storageSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing