Tuloy Tools

A private MCP server run by James Fouts at The Tuloy Lab. This page says what it does, how sign-in works and what it keeps.

MCP endpoint
https://tools.tuloylab.com/mcp
Protocol
MCP 2026-07-28 over Streamable HTTP, with 2025-11-25 and older for clients that still use initialize.
Sign-in
OAuth 2.1 with PKCE. Metadata at /.well-known/oauth-protected-resource/mcp.

What the tools do

Every tool result comes back as structured content that matches the output schema the tool declares, plus the same JSON as text.

memo_write

Save a text note on this server so any agent connected to it can find it later with memo_search. Notes are kept until the owner deletes them. Returns the new note id.

InputType
textstring, requiredThe note to save, as plain text.
ResultType
idstring, requiredId of the saved note.
created_atstringWhen the note was saved (UTC).

memo_search

Find saved notes. Matches every word of the query, case-insensitive, newest first. An empty query returns the newest notes.

InputType
querystring, requiredWords or an exact code to look for.
limitintegerMost notes to return.
ResultType
notesarray, required

upload

Store a file on this server and get back a public link to it. Anyone with the link can open the file, so do not upload secrets. Send the file bytes base64-encoded. Files up to 10 MB.

InputType
filenamestring, requiredFile name, for example clip.mp3.
content_base64string, requiredThe file bytes, base64-encoded. A data: URL also works.
content_typestringMIME type, for example audio/mpeg. Guessed from the name when left out.
ResultType
urlstring, requiredPublic link to the file, served by this server.
idstring
filenamestring
content_typestring
bytesinteger
sha256string

transcribe

Turn speech in an audio file at a URL into timestamped text (Whisper large v3 turbo). Works with links from upload and with public http(s) links. Common formats such as mp3, wav, m4a, ogg and webm, up to 10 MB.

InputType
urlstring, requiredLink to the audio file.
languagestringOptional language code such as en. Detected when left out.
ResultType
segmentsarray, required
textstringThe whole transcript.
languagestring
durationnumberAudio length in seconds.

How sign-in works

What data it keeps

DataWhat is storedHow long
MemosThe note text, the time and the name of the app that saved it. Every connected app can search them.Until the owner deletes them
Uploaded filesThe file, its name, type, size and checksum. Anyone with the link can open it. Links are random and long, so they are hard to guess, but they are not secret once shared.Until the owner deletes them
TranscriptionsNothing. Audio is fetched, sent to Cloudflare Workers AI (Whisper) and the text goes back to the caller. Neither is saved.Not kept
Connected appsApp name, client id, return addresses, approval time, and hashed tokens.Until revoked. Expired tokens are cleared after a day
LogsEvent lines with the tool name, the app name, sizes and timing. No note text, file contents or tokens.Cloudflare log retention, a few days

Limits

Where it runs

A Cloudflare Worker with a Cloudflare D1 database. Transcription uses Cloudflare Workers AI. Nothing runs on a home machine.