Inspiration
Online shopping can be really time-consuming, especially if you are trying to get, for example, a pair of second-hand sneakers. With Bargainer, you can just tell you ai agent that you want to buy sneakers and sit back and watch as it shows you all available options, negotiates the price, and gets you a final deal that you have to improve. It saves time and effort. It's online shopping done the modern way.
What it does
AI agents negotiate and reach a deal on both the buyer and seller side that needs to be approved (or is auto-approved, if enabled). Makes use of WebMCP tools to provide all the information to the agents.
How we built it
It is built as a React and TypeScript SPA. It is client-side with no backend. It is deployed on Netlify.
Challenges we ran into
WebMCP is a newer technology, so a lot of my work came from trial and error, as I didn't know much about it beforehand either. React StrictMode's double-mounting broke tool registration until I rebuilt it around AbortController cleanup (the spec has no unregisterTool). Tool errors are opaque to agents, so I return structured {ok: false, message} responses instead of throwing. And the human gate needed a 60-second approval token so the tool can tell the agent "waiting on the human" instead of silently blocking.
Accomplishments that we're proud of
I had very little time to make this project, as I found out about it much later. But 9 registered and running WebMCP tools in such a short time feels like a win.
What we learned
This is my first ever hackathon. I gave it my best and hope to win, but even if I don't, it was a very valuable learning experience for me. I learnt about WebMCP and how its tools can be used effectively. I learnt to plan, code, test, and debug a project with a time crunch.
What's next for Bargainer
I will build a lightweight backend that will allow real buyer agents to join from other devices instead of simulated ones.
Built With
- json
- jsonschema
- react
- tailwind
- typescript
- vite
- zustand
Log in or sign up for Devpost to join the conversation.