-
-
Say it once — your agent trims, cleans, levels and exports across 49 browser tools, and the audio never leaves your tab.
-
From the homepage, the agent calls list_tools and open_tool to route itself to the right tool.
-
The agent drives the real waveform and controls while you watch — and nothing is uploaded.
ihateaudio is 49 free audio tools that run entirely in your browser — trim, convert, clean, split, master — with no upload, no account, and no file‑size limit. For the WebMCP Challenge, we made every one of them operable by an AI agent, and wired them together so a single request runs as a complete, cross‑tool workflow.
The problem
Ask any AI agent to fix a recording and it hits a wall. It can't hear, it can't run a DSP chain, and its only real option is "upload it to some server." That's exactly what people with a private voice note, an unreleased track, or a confidential interview won't do. Audio has been a blind spot for agents.
What it does
Open ihateaudio.com in an agent browser and say: "I have a voice note — make it podcast‑ready." The agent:
- Calls
list_tools, reads the site's catalog, andopen_toolto open the trimmer. - You choose the file — once. (A web page can't read your disk; that's the privacy guarantee, not a limitation.)
set_trimkeeps the part that matters, thensend_to_toolhands the result to the silence remover — already loaded, no re‑upload.set_silence_removaltightens the pauses; every candidate cut is highlighted on the waveform.send_to_tool→ normalizer,set_loudness_target({ platform: "podcast" }).render_preview, thenexport_downloadwhen you say so.
One sentence. Four tools. One click from you. The agent ran the pipeline; you kept the judgment.
Why WebMCP is the right fit
The agent stands on the same page as the person and uses tools the page itself defines. It gets back numbers — a duration, a list of quiet gaps, a slider value — never the audio. The samples never leave the tab. Generic pixel‑guessing automation can't drive a waveform with drag handles, or a threshold slider whose effect is a re‑scan of every sample. set_silence_removal({ threshold: -45, minimumGapSec: 0.5 }) does it exactly, and you watch it happen.
What people and agents can do together that was impossible before
- A whole job, hands‑free after one click — trim, clean, level, export, across four tools, from one sentence.
- Human judgment stays human. Which pause matters, whether the voice still sounds natural — you decide, on the waveform. The agent measures and sets.
- Zero‑upload agent audio. Loudness, true peak, and quiet‑gap timing are computed in the tab and returned as numbers. An agent reasons about a recording it will never hold.
- One toolkit, learned once. Five base tools on every page plus one named action per tool. Learn the trimmer, you already know the equalizer.
How we built it
The site's 49 pages share one runtime, so the WebMCP layer lives in one place and every page inherits it:
- Host boundary detects
document.modelContext(ChatGPT) andnavigator.modelContext(Chrome), registers on every host found, and degrades to an ordinary editor when neither exists. - Site tools on every page:
list_tools(a catalog built at deploy time from each page's own manifest, so names can't drift) andopen_tool(replies before navigating, so the host never loses a result). - Base tools on every tool page: inspect, set format,
render_preview,send_to_tool(a lossless hand‑off via IndexedDB),load_audio_from_url, andexport_download. - 33 named actions —
set_trim,set_silence_removal,set_equalizer(8 bands),set_stems(4 stems), and more — each a real JSON schema. Agent values are clamped to the control's range and applied by firing the same events a human drag does, so live drawings and previews respond. - 40 browser tests shim a WebMCP host on both
documentandnavigator, call every action on every page, and assert the visible controls, reports, and the tool‑to‑tool hand‑off.
Built with Astro + TypeScript, the Web Audio API, a WASM ffmpeg/AI tier, and IndexedDB, deployed on Cloudflare Workers.
New for the Challenge (prior work vs. new work)
ihateaudio existed before as a browser audio‑tool site. Everything agent‑related is new, all dated in the public commit history from 2026‑08‑26 onward: src/lib/webmcp.ts, src/lib/agent.ts, src/lib/site-tools.ts, the agent layer in src/lib/tool.ts, 33 page manifests, and the tests. The split is documented in docs/WEBMCP.md in the repo.
Try it yourself
- ChatGPT desktop app — Work chat, ⌘⇧B for the built‑in browser, Settings › Browser › Permissions › Enable site tools → open https://ihateaudio.com → "make this voice note podcast‑ready."
- Chrome 149+ — enable
chrome://flags/#enable-webmcp-testing, open any tool page, and drive the tools from DevTools › Application › WebMCP.
Free, for everyone, forever. Any agent that can open a web page now has a complete audio studio — and the audio never leaves the tab.
Built With
- astro
- cloudflare-workers
- indexeddb
- javascript
- model-context-protocol
- typescript
- web-audio-api
- webassembly
- webmcp
Log in or sign up for Devpost to join the conversation.