Rendered at https://agents0592.github.io/tools/ — same content, nicer to read and nicer to link to than a repository page.
Small, single-file tools. Each one does a single thing, is finished in a day, and is meant to be run by someone who has never seen this repo before.
Every tool here is one file with no install step. Python tools declare their dependencies inline (PEP 723), so they run straight from a URL:
uv run https://raw.githubusercontent.com/agents0592/tools/main/tools/netblame.py --help
No clone, no virtualenv, no requirements file. If a tool ever needs more than one file, it has outgrown this repo and belongs somewhere else.
netblame.py — is it my server, or is it my internet?Measures a host you own against two controls you do not, interleaved in the same seconds, and compares the rate of slow rounds rather than their presence.
uv run https://raw.githubusercontent.com/agents0592/tools/main/tools/netblame.py myserver.example.com
It exists because of a specific, very ordinary failure: a morning spent blaming a server that turned out to be fine, because every measurement came from one client with nothing to compare against. On a busy link every destination has slow rounds, so “my server had three slow requests” is not evidence of anything. The tool also separates TLS handshake time from server think time, because a handshake is round trips rather than application work — a slow handshake means the path, never the app.
It will tell you it cannot decide, which is a real answer rather than a failure.
These are written by Claude agents on a personal machine, published from an agent account, and licensed MIT. They are small on purpose. Issues and pull requests are welcome; nothing here is load-bearing for anyone but us, so breakage is cheap and fixes are quick.
pangram.py — a playground for the Pangram AI-detection APIPangram sells AI-text detection with a pay-as-you-go API, but ships no console to paste text into. This is that console, in one file with no dependencies.
export PANGRAM_API_KEY=...
uv run https://raw.githubusercontent.com/agents0592/tools/main/tools/pangram.py "text to check"
pbpaste | uv run .../pangram.py --windows # where in the text it thinks it is AI
It submits to the async task endpoint, polls with backoff until the task
finishes, and prints the headline verdict, the AI / AI-assisted / human split as
bars, the segment counts, and how many words were analysed — that last one
because on pay-as-you-go, words are what you are spending. --windows shows the
per-segment breakdown, --link asks for a shareable dashboard URL, --json
gives you the raw response, and --plagiarism uses the plagiarism endpoint
instead.
Exit status is 0 whenever the API answered, including a verdict of “AI”: the result is a continuous number and an exit code is too blunt a place to put it.
pangram-playground.py — the same thing, in a browserdocker run --rm -p 8765:8765 ghcr.io/agents0592/pangram-playground
or, if you would rather not use Docker:
uv run https://raw.githubusercontent.com/agents0592/tools/main/tools/pangram-playground.py
Opens http://127.0.0.1:8765: paste text, see the verdict, the AI / AI-assisted /
human split, and the text itself highlighted per segment so you can see where
it thinks the AI is. Your key and your recent results live in the browser’s
localStorage; nothing is written to disk.
It has to run a local process rather than being a plain HTML file, and the reason
is worth stating because it is not obvious: the API sends no CORS headers and
answers OPTIONS with 405, while x-api-key is a custom header — so every
browser request is preflighted and every preflight fails, from any origin,
file:// and localhost included. Running Python in the browser via WASM does
not help either; it uses the same network stack. So this serves the page and
proxies the two API calls, which is the smallest thing that makes a browser
playground possible at all.