Shaping the MCP at GWI

  • /agentic-design
  • /user-experience
  • /conversational-ux

GWI holds one of the largest consumer datasets in the world. Using it has always meant learning the intricacies of the platform. GWI launched Agent Spark in 2025, which shifted the landscape and put more power in the hands of non-power users. In late 2025, the GWI MCP launched.

We found our users were already using AI as part of their workflow, but it was messy and inconsistent. They were exporting data into Claude and ChatGPT to make sense of it, and the MCP gave that workflow some structure.

I joined the API/MCP squad to shape how users interacted with the MCP. It was new and picking up speed, and my job was to grow it by solving real user problems and shaping the UX around them.

MCP hero prototype, showing the audience and dataset workflow in motion.

This was a new experience for me. The MCP was a surface with no UI to manipulate. The outcomes were non-deterministic, and it sat on a data model with hard rules. Most of the design work happened in the connective tissue between them: the orchestration of the MCP, GWI's architecture, the client, the tools, the skills, and the resources.

/mcp-architecture
/mcp-host
Client
mcp protocol
/mcp-server
Tools Resources Prompts Apps Skills via resources
api calls
/integrations
Databases Services Files
skills served over MCP as resources · emerging (SEP-2640)
How the MCP host, server, and GWI integrations fit together.

Moving at pace

The landscape moved weekly. Frontier models shifted, clients were building proprietary tools, and I had to move fast to keep up. There was no design system or best practice for AI-native surfaces, so I had to define what good looked like.

The Impact

Since November, the MCP grew, fast.

/mcp-usage

API requests and users

Monthly usage from August 2025 to June 2026. Lines are scaled independently.

MCP API requests and active users, August 2025 to June 2026.
  • Users were able to query GWI data using objects they'd built on the platform.
  • MCP usage skyrocketed between November and June.

That growth was why UX mattered. Users kept hitting the same walls, and we had to carve out a real happy path for the thousands of requests coming in.

The Problem

We spoke to around 100 users to hear what was working, what wasn't, and how they were actually working. Two topics kept coming up:

  • Users wanted to query using audiences they'd created in the platform.
  • Users wanted access to custom study data in the MCP.

The Challenge

GWI's data already had a structure, and that structure set the constraints for the experience.

Datasets

Each dataset is a survey that a set of respondents answered. Datasets are grouped under a top-level ecosystem, and an ecosystem can hold several studies beneath it. Custom studies are client-commissioned datasets that live under an ecosystem. Ecosystems aren't compatible with each other, since the respondents are different.

Audiences

A saved group of respondents, built by the user. Every audience is pinned to a single dataset or ecosystem.

A single organisation could have 100+ meticulously built audiences, and even more custom studies, on top of our global datasets and ecosystems. Respondents belong to one ecosystem, so audiences and studies from different ecosystems can't be combined. This rule is invisible to the user and easy for a model to trip over. Designing around it, without making the user learn it, was the real work.

Audience filter scopes
The same audience list at three scopes. Pick an ecosystem and the audiences filter to it. Pick a study and they filter again. The lock counts keep whatever dropped out of view accounted for.
/nlq-routing
Hybrid user-flow and system diagram for routing natural-language queries across dataset and audience states.

Ideation

I started by mapping a hybrid user-flow and system diagram. It got us aligned on the happy path, but it also mapped out the error handling we'd need to navigate, and helped us think through which tools the flow required.

We mapped out the tools we'd need to solve the problems. There ended up being three:

  • List Datasets. Lists a user's available datasets and lets them switch them on and off.
  • Audience Browser. Lets users semantically search their audiences by title, description, and metadata.
  • Audience List. Lists the audiences a user has saved to the platform.

The tools were the easy part. The hard part was the state between them, and how a change in one rippled into the others. Three decisions did most of the work.

Selecting an audience with nothing active shouldn't dead-end. So it auto-activates the audience's parent dataset and tells the user it did. They name what they want, and the system works out where it lives.

Clearing a dataset shouldn't wipe your work. So clearing the filter keeps your selected audiences and just widens the view. Switching to an incompatible dataset is different, and that one warns you first, because it has to drop what no longer fits.

A cross-ecosystem pick shouldn't fail silently or throw an error. So it becomes a choice, with the cost spelled out: switch and lose the current selection, or stay. The one-ecosystem rule is the highest priority in the system, and nothing overrides it, but the user always sees the trade before it happens.

None of this shows up as UI. It's a set of rules the model follows so the valid path stays the easy one.

Audience state model
One ecosystem active, many studies allowed inside it, and every cross-ecosystem move routed through a confirmation rather than a silent switch.

Here's the whole thing in a single session, annotated.

Annotated conversation
Show all audiences, select one and watch its dataset auto-activate, then hit the guardrail when the next pick crosses an ecosystem. Each note flags the decision behind that turn.

I wrote the flow as a skill: markdown-defined guidance that runs inside the MCP itself.

MCP Skill Prototype

That gave the developers a working prototype of how a user should move through the tools. It closed the gap between "here is what I mean" and "here is the thing running" to almost nothing, and it turned out to be the most useful handover artefact of the whole project.

Lightweight HTML/CSS recreations of the dataset selector and audience browser MCP apps. Search, scroll, checkboxes, and reset all work natively, with no backend.

MCP Apps

In January, the MCP launched MCP apps. This opened up some interesting use cases and gave us a surface to solve more of our users' problems. It looked like a big opportunity at first, but after some discovery there were a few cons:

  • Another surface to maintain.
  • Doesn't work for all clients.
  • UX and UI restrictions imposed by the frontier models.

We decided to treat MCP apps as a bonus for the clients that could ingest them. We still needed a text-relay fallback that would work with any agent, though.

text-relay.txt

Datasets to sync - pick ONE ecosystem (Core, USA, or Kids); they're not compatible.
Reply "select USA", "toggle <name>", "expand <name>", or "clear".

├ (~) ▼ GWI Core
│  └ [~] ▼ GWI Syndicated
│     ├ [x]   GWI Core Plus
│     ├ [~] ▶ GWI Pulse          [13]
│     ├ [x]   GWI Alcohol
│     ├ [x]   GWI Automotive
│     ├ [x]   GWI Consumer Tech
│     ├ [x]   GWI Gaming
│     ├ [x]   GWI Luxury
│     ├ [x]   GWI Moments
│     ├ [x]   GWI Sports
│     ├ [x]   GWI Travel
│     └ [x]   GWI Work
├ ( ) ▶ GWI USA
└ ( ) ▶ GWI Kids

(•) active ecosystem  ( ) inactive  (~) active, partial
[x] selected   [ ] not selected   [~] partial
▼ open   ▶ closed

Using Cursor, I built a prototype MCP app wired directly to Claude. That gave us something real to demonstrate to the business, and a foundation of ideas to build on.

What Shipped

One MCP app, three tools, and their instructions all shipped across four months. Users could now query GWI data using every object they'd built on the platform.

What I took from it

The interesting part of this project was never the UI. It was designing a set of rules a probabilistic model would follow, on a surface I couldn't fully see, for data with constraints the user should never have to think about. The apps are the visible five percent. The other ninety-five is the tool design, the state model, and the flows that keep a valid answer the path of least resistance.