Inspiration
My inspiration stems from the fact that small business owners importing goods often don't find out the real cost of a shipment: tariffs, duties, and margin impact: until after they've already committed to an order. Tariffiq exists to answer that instantly, before the purchase order goes out.
What it does
Tariffiq calculates the full landed cost of an import: base price, tariff rate, total duty owed, and the resulting hit to profit margins. It also surfaces cheaper sourcing alternatives, comparing the same product from other origin countries and showing the potential savings.
How we built it
Tariffiq is a React + Vite app. We used document.modelContext.registerTool to expose two tools:
analyze_tariff: runs a full tariff analysis for a product, origin country, quantity, and unit priceswitch_origin_country: re-runs the last analysis with a different origin country, so an agent can compare sourcing options without re-entering the rest of the shipment details Both tools call the app's existing analysis functions directly, so when an agent invokes a tool, the result renders live on the same page a human is looking at not in a separate chat window.
Challenges we ran into
Our biggest challenge wasn't writing the tools, it was proving they actually worked. ChatGPT wasn't reliably discovering our registered tools on our account, which initially made us think our WebMCP implementation was broken. After re-reading the submission rules closely, we realized judges can test via either ChatGPT's in-app browser or Chrome with WebMCP enabled, so we shifted to verifying everything through Chrome's own WebMCP DevTools panel instead.
That came with its own hurdles: getting the manual "Run Tool" test interface to actually render (it turned out to be a cramped panel/viewport issue, not a missing flag), and separately, fixing a bug where React's StrictMode was double-registering each tool in development. Working through both taught us to verify assumptions directly against official tooling rather than relying on any single client's behavior.
Accomplishments that we're proud of
We're proud that Tariffiq's WebMCP tools aren't just registered they're genuinely functional. When an agent calls analyze_tariff, it's not returning a canned response; it's running the same real calculation logic a human would trigger through the UI, and the result appears live on the same page. We verified this end-to-end using Chrome's own official WebMCP DevTools panel, invoking the tool directly, with no manual form-filling, and watching the live production site update in real time.
We're also proud of not overclaiming: rather than assuming our implementation was broken because of one client's inconsistent tool discovery, we diagnosed the actual cause, confirmed our tools work correctly against the official spec, and built our submission around what we could concretely prove.
What we learned
We learned that WebMCP support isn't uniform across clients yet, a tool can be correctly implemented per spec and still behave inconsistently depending on which agent or browser is testing it. That pushed us to test against the official Chrome WebMCP DevTools panel directly rather than trusting any single client's behavior as the ground truth.
We also learned the value of reading requirements literally rather than assuming the strictest interpretation. The rules stated judges could test via ChatGPT or Chrome, once we confirmed that, we stopped chasing an issue that wasn't actually blocking our submission, and redirected that time toward strengthening what we could already prove worked.
On the technical side, we got a much clearer picture of how document.modelContext.registerTool interacts with React's lifecycle, specifically how StrictMode's double-invocation in development can silently duplicate tool registrations if you don't guard for it.
What's next for Tariffiq
We want to expand the tariff engine beyond a single-shipment lookup into ongoing monitoring, letting an agent check in periodically as tariff rates change and proactively flag when a cheaper sourcing country becomes available for a product a user has already analyzed.
We'd also like to add more WebMCP tools: one for bulk-comparing an entire supplier list at once, and one that lets an agent draft a sourcing recommendation report a user can hand directly to a supplier or customs broker.
Longer term, we're interested in exposing historical tariff trends as a tool too, so an agent could tell a user not just today's cost, but whether tariffs on a product have been rising or falling useful context for timing a purchase.
Built With
- javascript
- openrouter-api
- react
- vercel
- vite
- webmcp
Log in or sign up for Devpost to join the conversation.