# Pebbler MCP

- [Case study](https://tesselpunt.com/projects/pebbler-mcp)

An MCP connector that lets AI agents commission image comparisons, pay for them, and retrieve feedback from real people using Pebbler.

From agent-generated alternatives to human preferences.

Role: Product design, connector & platform engineering

Period: 2026

Technologies: MCP, TypeScript, x402, Workers

- [Public repository](https://github.com/bridge-applications/pebbler-mcp)

AI agents can generate design alternatives, but choosing between them still benefits from human feedback. I built Pebbler MCP to bring that feedback into the agent’s workflow: submit two images, get a current quote, purchase a comparison, and retrieve the responses.

The connector extends Pebbler, the micro-task app I build and operate in World App. An agent commissions the test; people see the comparison in the app, vote for their preferred image, and can claim a reward. I designed and implemented the connector and its platform integration, then published the package and validated the full journey in production.

## A familiar experience for participants

The agent submits a clear question and two publicly accessible images. The platform turns those inputs into a comparison in Pebbler’s existing A vs B product. Participants see the images side by side, choose A or B, and see the reward before voting.

The screenshot below shows the actual agent-created logo comparison in World App. Agent-created tests display “User” as the creator. This keeps the interface focused on the question and fits the experience people already use.

- [The Pebbler product](https://tesselpunt.com/projects/pebbler-world)

### An agent-created comparison in Pebbler

The real participant experience in World App: two logo alternatives, A/B voting, and a reward shown before participation.

Image description: Pebbler A vs B asking Which logo do you prefer, with a blue circle and an orange diamond, A and B voting buttons, a 0.01 USDC reward and 91 total votes

Participant screenshot supplied on October 6, 2026. The vote count and reward shown are a snapshot of this test.

- [Image](https://tesselpunt.com/media/pebbler-mcp-participant-large.webp)

- [Screenshot page](https://tesselpunt.com/projects/pebbler-mcp/gallery/pebbler-mcp-participant)

## Making the next step clear to an agent

I split the workflow into seven tools with structured inputs and descriptions that explain when to call them. The agent reads the catalog, creates a draft, checks its quote, and purchases the test. It can then check collection progress, retrieve aggregate results, or recover studies saved by its local connector.

Pricing and availability come from the live catalog and quote. The connector does not bake a price into its instructions. Creating a draft and reading a quote are free, so the agent can explain the offer before committing to a purchase.

### How the connector talks to Pebbler

The seven MCP tools and their request/response flow, from a live quote and x402 payment to votes from Pebbler users in World App and results returned to the agent. Open the diagram to view it at full size.

Image description: Sequence diagram between an AI agent, the local Pebbler MCP connector, Pebbler backend, x402 facilitator and Pebbler users in World App, showing all seven tools, local credentials, payment authorisation, settlement, voting and results

Exported from the Pebbler MCP FigJam diagram. Agent payments settle on Base; participant rewards are claimed on World Chain.

- [Image](https://tesselpunt.com/media/pebbler-mcp-sequence-large.webp)

- [Screenshot page](https://tesselpunt.com/projects/pebbler-mcp/gallery/pebbler-mcp-sequence)

## Treating a purchase as more than an API call

Purchasing a test crosses several boundaries: authorising a USDC payment, settling it, and scheduling the comparison for participants. I used x402 for payment and made purchases an explicit opt-in with per-test and cumulative spending limits enforced by the connector.

A dropped connection must not mean paying again. The connector saves the exact signed payment authorisation before sending it and reuses the original purchase identifiers on retries. Pending settlement or launch is recovered through that same purchase, rather than starting a new one.

Study credentials stay in the local adapter and are kept out of tool responses. Persisted study state lets an agent resume after a restart. I integrated the workflow into the existing platform without a database migration, reusing the participant voting and reward experience.

## Returning feedback with its context

Results are available while responses are still being collected. The tool returns the collection status, response count, and aggregate preference data, so the agent can distinguish an early snapshot from a finished study. It also receives polling guidance instead of needing to check continuously.

These are image preference tests with incentivised participants. The results describe which option respondents chose; they do not establish a conversion uplift or a causal effect. Reserving respondent slots also does not guarantee that every slot will be completed.

The paid production comparison collected 91 votes in under 90 minutes: 59 for A and 32 for B. I retrieved the results through the MCP connector and also verified a successful participant reward claim. The visual below uses a real response from that study, with private access details omitted.

This is already an MVP result. My near-term goal is to collect 100 votes in under 10 minutes, making human feedback a faster part of an agent’s workflow.

### Real feedback returned through MCP

The production get_study_results response is presented for readability; collection was still in progress.

Image description: Real get_study_results response: still collecting with 91 responses out of 100 slots, A has 59 votes (64.8%) and B has 32 votes (35.2%)

Captured through the MCP connector on October 6, 2026. Production vote timestamps verify 1 hour, 25 minutes and 48 seconds between the first and 91st completed vote. Study credentials and private identifiers are omitted.

- [Image](https://tesselpunt.com/media/pebbler-mcp-results-large.webp)

- [Screenshot page](https://tesselpunt.com/projects/pebbler-mcp/gallery/pebbler-mcp-results)

## Shipping a connector people can install

I published the source on GitHub, released @pebbler/pebbler-mcp on npm, and listed it in the official MCP Registry. The first version focuses on comparisons between two images. Its documentation explains installation, the tool sequence, spending controls, and how to return for results.

The release checks cover input validation, spending limits, payment retries, and state recovery. I also tested the packed package in a separate installation and connected to the live catalog through the published npm package. This checks the artifact a user installs as well as the source implementation.

### Connect an MCP-compatible app

The published local connector. Catalog access and drafts work without enabling purchases; purchase configuration is explained in the package documentation.

```json
{
  "mcpServers": {
    "pebbler": {
      "command": "npx",
      "args": ["-y", "@pebbler/pebbler-mcp@0.1.0"]
    }
  }
}
```

- [Installation and usage](https://github.com/bridge-applications/pebbler-mcp#connect-your-agent)

- [Source on GitHub](https://github.com/bridge-applications/pebbler-mcp)
- [Package on npm](https://www.npmjs.com/package/@pebbler/pebbler-mcp)
- [Official MCP Registry listing](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.bridge-applications%2Fpebbler-mcp)

## Screenshots

### An agent-created comparison in Pebbler

The real participant experience in World App: two logo alternatives, A/B voting, and a reward shown before participation.

Image description: Pebbler A vs B asking Which logo do you prefer, with a blue circle and an orange diamond, A and B voting buttons, a 0.01 USDC reward and 91 total votes

Participant screenshot supplied on October 6, 2026. The vote count and reward shown are a snapshot of this test.

- [Image](https://tesselpunt.com/media/pebbler-mcp-participant-large.webp)

- [Screenshot page](https://tesselpunt.com/projects/pebbler-mcp/gallery/pebbler-mcp-participant)

### How the connector talks to Pebbler

The seven MCP tools and their request/response flow, from a live quote and x402 payment to votes from Pebbler users in World App and results returned to the agent. Open the diagram to view it at full size.

Image description: Sequence diagram between an AI agent, the local Pebbler MCP connector, Pebbler backend, x402 facilitator and Pebbler users in World App, showing all seven tools, local credentials, payment authorisation, settlement, voting and results

Exported from the Pebbler MCP FigJam diagram. Agent payments settle on Base; participant rewards are claimed on World Chain.

- [Image](https://tesselpunt.com/media/pebbler-mcp-sequence-large.webp)

- [Screenshot page](https://tesselpunt.com/projects/pebbler-mcp/gallery/pebbler-mcp-sequence)

### Real feedback returned through MCP

The production get_study_results response is presented for readability; collection was still in progress.

Image description: Real get_study_results response: still collecting with 91 responses out of 100 slots, A has 59 votes (64.8%) and B has 32 votes (35.2%)

Captured through the MCP connector on October 6, 2026. Production vote timestamps verify 1 hour, 25 minutes and 48 seconds between the first and 91st completed vote. Study credentials and private identifiers are omitted.

- [Image](https://tesselpunt.com/media/pebbler-mcp-results-large.webp)

- [Screenshot page](https://tesselpunt.com/projects/pebbler-mcp/gallery/pebbler-mcp-results)
