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:

  1. Calls list_tools, reads the site's catalog, and open_tool to open the trimmer.
  2. You choose the file — once. (A web page can't read your disk; that's the privacy guarantee, not a limitation.)
  3. set_trim keeps the part that matters, then send_to_tool hands the result to the silence remover — already loaded, no re‑upload.
  4. set_silence_removal tightens the pauses; every candidate cut is highlighted on the waveform.
  5. send_to_tool → normalizer, set_loudness_target({ platform: "podcast" }).
  6. render_preview, then export_download when 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) and navigator.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) and open_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, and export_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 document and navigator, 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
Share this project:

Updates

Submission history