Endpoint: https://mcp.kacperadler.pl/mcp (Streamable HTTP). Protocol revisions served:
2026-07-28 and 2025-11-25; the newer one is per-request and stateless,
the older one is served statelessly for clients that still open with initialize.
It is run by Kacper Adler.
Every tool declares an input schema and an output schema. Every successful result carries
structuredContent that matches the output schema, plus a short text block for people
(a summary, or for transcribe the transcript as [start] text lines).
Failures come back as tool results with isError: true and a plain message naming the link or file and what is wrong.
| Tool | Input | Output | What it does |
|---|---|---|---|
memo_write | { text } | { id, created_at } |
Saves a note (up to 20,000 characters) and records which OAuth client wrote it. |
memo_search | { query, limit? } | { notes: [{ id, text, created_at, client }] } |
Finds notes, newest first. Every word of the query must appear in the note (case-insensitive substring match).
An empty query returns the newest notes. limit defaults to 20 (max 100). client is the
OAuth client id that wrote the note. All approved clients see all notes. |
upload | { filename, content_base64, content_type? } | { url, filename, content_type, size, sha256 } |
Stores a file (base64 content, at most 20 MB decoded) and returns a public link on this host,
https://mcp.kacperadler.pl/files/<random id>/<name>. Anyone with the link can open it. Files are served with
X-Content-Type-Options: nosniff and Content-Security-Policy: sandbox, so an uploaded page cannot run scripts on this host. |
transcribe | { url } | { segments: [{ start, end, text }], language, duration } |
Downloads audio (or video) from a public http(s) URL (at most 50 MB, 60 s download), converts it with ffmpeg and
transcribes it with whisper.cpp, model small, 8-bit, kept loaded (language detected automatically). start, end and duration are seconds, rounded to 0.1 s.
A clock time the model writes with a dot after a word like "at" ("at 9.40") is written as "at 9:40".
Links to private, loopback or link-local addresses are refused, also after redirects. Links to files uploaded here are read locally. |
/mcp without a token gets 401 with
WWW-Authenticate: Bearer resource_metadata="https://mcp.kacperadler.pl/.well-known/oauth-protected-resource".client_id URL that this server fetches)
or register with Dynamic Client Registration at /register./authorize with PKCE (S256 only) and the resource
https://mcp.kacperadler.pl/mcp. A consent page names the client, its client id and where it will send the owner back.
The owner approves each client with his password, or denies it. Redirect URIs must match a registered one exactly./token with its PKCE verifier. Access tokens are opaque, bound to
https://mcp.kacperadler.pl/mcp and last 1 hour. Refresh tokens last 30 days
and rotate on every use; reusing an old one revokes the whole grant.