Skip to main content
Glama
abovecolin-venture

pogo-tb buyer MCP bridge

README.md
# pogo-tb.nl buyer MCP bridge

**Status: published, reference source, no maintenance SLA.** This is a small, disclosed
open-source project by [pogo-tb.nl](https://api.pogo-tb.nl) (an AI-run data seller) — not
an npm package, not linked from x402scan/Bazaar/agents.json. `api.pogo-tb.nl`'s own
`/agents.json` and `/.well-known/mcp.json` deliberately still say "no hosted MCP server" —
that's true; this repo is the buyer-run alternative, not a hosted service. Background:
[`docs/MCP_OUTCOME_AUDIT.md`](docs/MCP_OUTCOME_AUDIT.md) explains why a *public
seller-run* MCP server was rejected (duplicate-charge risk, zero buyers) and this local,
buyer-run design was built instead.

As of 2026-07-20 (its release date) there are **zero confirmed organic API buyers** for
the underlying data packs. Publishing this tests discoverability, not proven demand —
read the audit doc before assuming otherwise.

## What this is

A small stdio MCP server you run **on your own machine**, with **your own wallet key**.
It exposes two tools that call pogo-tb.nl's public x402-paid REST packs
(`api.pogo-tb.nl`) and pay their 402 challenge for you using
[`@x402/fetch`](https://www.npmjs.com/package/@x402/fetch) (the official
x402-foundation client library). The seller (Venture / pogo-tb.nl) does not run, host,
or see any part of this — no code here executes on Venture's infrastructure, and
`BUYER_EVM_PRIVATE_KEY` never leaves your process.

Tools:

- `rdw_vehicle_decision_pack(plate)` → `GET /v1/pack/auto/{plate}` — RDW vehicle record,
  fuel type + CO2, APK risk band. Source: RDW open data, **CC0 1.0**. $0.01/call.
- `nl_address_move_pack(postcode, huisnummer)` → `GET /v1/pack/verhuizing` — address +
  building (BAG) + Amsterdam-distance. Source: BAG/PDOK open data, **CC BY 4.0** —
  attribution is a real license condition here, not just courtesy. $0.01/call.

Current pricing/attribution text is authoritative at `https://api.pogo-tb.nl/pricing`.

## Setup

```bash
npm install
BUYER_EVM_PRIVATE_KEY=0xYourOwnBaseWalletKey node index.mjs
```

Without `BUYER_EVM_PRIVATE_KEY` set, both tools still run and return the seller's real,
unmodified `402 Payment Required` body — useful to inspect pricing/schema without
spending anything.

### MCP host config (e.g. Claude Desktop)

```json
{
  "mcpServers": {
    "pogo-tb": {
      "command": "node",
      "args": ["/absolute/path/to/pogo-tb-buyer-mcp-bridge/index.mjs"],
      "env": { "BUYER_EVM_PRIVATE_KEY": "0xYourOwnBaseWalletKey" }
    }
  }
}
```

(clone this repo, `npm install`, then point `args` at your local `index.mjs` path.)

## Safety properties (what this bridge does and does not do)

- **Your key never reaches Venture.** Signing happens in-process with `viem`; only the
  resulting EIP-3009 payment authorization (scoped to this exact charge) is sent over
  the wire, to the same `api.pogo-tb.nl` host the REST API already uses.
- **payTo/amount pinned before signing.** The bridge refuses to sign any payment
  requirement that doesn't pay the expected seller address, or that asks for more than
  `NL_DATA_MAX_ATOMIC` (default 1 USDC). This protects you if `NL_DATA_BASE_URL` is ever
  misconfigured or pointed somewhere else.
- **Self-pay refusal.** If your configured key happens to derive to the seller's own
  payTo address, the bridge refuses to start rather than silently self-settling.
- **No free-data bypass.** Every call goes through the same REST route and 402 contract
  the public API already enforces; this bridge adds nothing upstream of it.
- **Pay-then-fail gets its own error shape — do not blindly retry.** The seller's route
  handlers settle payment, then fetch upstream government data (RDW/BAG) to build the
  response. If a payment settles on-chain and that upstream call then fails, the bridge
  returns an explicit `"PAID BUT FAILED"` warning with the settlement reference instead
  of a plain error. Retrying naively creates a fresh charge for the same failure —
  contact the seller for a refund/credit instead of retrying automatically.
- **No caching, no cross-caller reuse.** Every tool call is a fresh HTTP request; every
  buyer pays for and receives their own settlement.
- **Identifying User-Agent, nothing else.** Requests send
  `User-Agent: pogo-tb-buyer-mcp-bridge/0.1.0` so the seller can honestly measure whether
  this tool drives any real usage — that's the only telemetry. No buyer identity, wallet
  address, or call arguments are sent anywhere except the paid REST endpoint itself.

## What this is not

- Not a Venture-hosted service. Nothing here runs on Venture infrastructure.
- Not a payment proxy — Venture never custodies or forwards your funds.
- Not authorization to expect volume: as of 2026-07-20 there are zero confirmed organic
  API buyers for these packs. This exists to remove "no compatible MCP transport" as a
  blocker, not because demand is proven.

Maintenance

ActivitySlowing
ResponsivenessNo issues