People-search sites still republish names, addresses, phones, and dates of birth. Opting out is tedious, easy to mess up, and basically irreversible once you hit Submit.
For the WeMakeDevs × TrueFoundry × Qodo agent-harness hackathon, I built **Undox** — a TrueForge agent that does the annoying work carefully, then **stops** until a person allows the exact payload.
**Live demo:** [undox.vercel.app](https://undox.vercel.app/app?session=demo-test-2)
**Repo:** [github.com/manasdutta04/undox](https://github.com/manasdutta04/undox)
**Connect MCP (paste-ready):** [undox.vercel.app/app/connect](https://undox.vercel.app/app/connect)
Privacy products exist because this workflow is painful. An agent that “just submits” is worse than no agent. We needed a harness that:
Chat summaries don’t count. Tool JSON and a dashboard do.
Undox is a TrueForge orchestrator wired to a custom HTTP MCP server (undox-tools
):
| TrueForge piece | How we use it |
|---|---|
| MCP tools | |
find_* → run_sandbox_prepare → approval-gated submit_opt_out ; plus get_session_state / get_exposure_dashboard |
|
| Sandbox + skills | |
Broker prepare scripts (prepare_runtime: sandbox-script ) |
|
| Approval | |
| Submit requires human Allow on the exact fields | |
| Subagents | |
dynamicSubAgents + parallel tool fan-out fallback |
|
| Sessions | |
File store keyed by session_id — survives TrueForge restart |
|
| Status UI | |
| Next.js dashboard on Vercel; same store as MCP on Render |
Demo brokers PeopleFind and Clearbook are fixtures (no live CAPTCHA on stage). Spokeo uses real URL mapping; submit stays mock.
The agent isn’t “one mock function + a chat UI.”
Kill TrueForge, restart, reopen the same session_id
— statuses are still there. That’s the Double-O story: durable harness state, not a one-shot demo.
Judges (and you) can walk the seeded session without cloning:
Exposure → Brokers → Approval → Connect
Session: demo-test-2
web/
)
/mcp
undox-demo-public
(mock submits only)Render free tier sleeps — first hit after idle can take ~a minute. Ping /healthz
before a live demo.
Every substantive change shipped as a PR with /agentic_review
. Qodo caught real issues — auth edges, stale UI after failed loads, CSS specificity bugs — and we fixed High/Medium before merge. CI also runs typecheck
, test
, and prove:heart
on every PR.
That mattered more than polish: the approval path and session store had to be trustworthy on camera.
Built with TrueForge. Reviewed with Qodo. Submits stay mock on purpose.
Thanks for reading — if you try the Connect paste, tell me what broke first. That’s usually the most useful review.