streamable-httpupdated 25d ago
A minimal, working test of the video's core mechanic: one agent request becomes a paid transaction at the edge. A Cloudflare Worker serves a live-computed price index from D1, gated by an x402-style 402 → pay → retry → data loop. Payment is mocked (shared-secret HMAC) so the whole loop runs with zero wallet setup; swapping in real x402 is a localized change.
¿Qué puedes hacer con argentina price index?
Paid Door — Argentina food & beverage price index (Cloudflare sandbox)
A minimal, working test of the video's core mechanic: one agent request becomes a paid transaction at the edge. A Cloudflare Worker serves a live-computed price index from D1, gated by an x402-style 402 → pay → retry → data loop. Payment is mocked (shared-secret HMAC) so the whole loop runs with zero wallet setup; swapping in real x402 is a localized change.
Data is synthetic.
seed/observations.sqlis generated placeholder data so the demo runs before a real scraper exists. Do not treat the numbers as real Argentine prices.
What's here
paid-door-index/
├─ wrangler.jsonc # Worker + D1 binding + sandbox vars
├─ schema.sql # price_observations + methodology (+ future index_series cache)
├─ seed/
│ ├─ generate.mjs # deterministic synthetic data generator (60 SKUs x 30 days)
│ └─ observations.sql # generated seed (1,800 rows)
├─ src/index.ts # Worker: routes + live index math + mock x402 gate
├─ agent/test-agent.mjs # the paying "buyer": request → 402 → pay → retry → data
└─ README.md
Endpoints
| Endpoint | Tier | Returns |
|---|---|---|
GET /v1/headline?country=AR&category=food_beverages |
free | latest index value + monthly rate (the teaser) |
GET /v1/index?country=AR&category=food_beverages |
paid ($0.02) | full daily series |
GET /v1/latest?country=AR&category=food_beverages |
paid ($0.02) | latest reading + methodology |
POST /mcp |
— | MCP JSON-RPC: initialize, tools/list, tools/call |
MCP interface (what agents actually call)
The Worker also speaks MCP over HTTP at /mcp, exposing two tools:
get_ar_food_headline(free) — latest value + 30-day rateget_ar_food_price_index(paid, $0.02 mock-x402) — full daily series; call once with no_paymentto receive a challenge, then retry witharguments._payment = {nonce, resource, amount, signature}
Test the full agent flow (with npm run dev running):
npm run agent:mcp # initialize → tools/list → free call → paid call (challenge → pay → data)
Production note:
/mcphere is a minimal JSON request/response subset of the Streamable HTTP transport (no SSE/sessions/auth). For a real deployment use the official MCP SDK or Cloudflare'sagentsMcpAgent, and replace the mock HMAC with a real x402 facilitator.
Index math (methodology_version = v0-simple-avg): index = 100 × mean(price_t / price_base) over in-stock SKUs, base = first day in the window. Upgrade path baked into the schema: geometric mean within category + Laspeyres across categories.
Run it locally
Prereqs: Node 18+ and a Cloudflare account (npx wrangler login).
cd paid-door-index
npm install
# 1. Create the D1 database, then paste the printed database_id into wrangler.jsonc
npm run db:create
# 2. Load schema + seed into LOCAL D1
npm run schema:local
npm run seed:gen # (optional) regenerate observations.sql
npm run seed:local
# 3. Start the Worker
npm run dev # serves http://127.0.0.1:8787
# 4. In a second terminal, run the paying agent
npm run agent
Expected agent output: the free headline, then a 402 with a price challenge, then a 200 with the full series and a PAYMENT-RESPONSE settlement header — one request turned into a transaction.
Deploy to your account
npm run schema:remote
npm run seed:remote
npm run deploy
# then point the agent at the deployed URL:
BASE=https://paid-door-index.<your-subdomain>.workers.dev npm run agent
Watch live logs with npx wrangler tail.
Sandbox → real (later)
- Real data: replace
seed/generate.mjswith a scheduled Worker that scrapes 1–2 Argentine online grocers daily intoprice_observations. - Real payment: replace the HMAC mock in
src/index.ts(verifyPayment/challenge) with a real x402 facilitator (POST /verify,POST /settle) per Cloudflare's Agents x402 docs. - Move the secret:
npx wrangler secret put MOCK_PAYMENT_SECRETinstead of the plain var. - Expose as MCP so any AI agent (including this assistant) can call
get_indexdirectly. - Materialize
index_seriesas a nightly cache once query volume grows.
Notes / caveats
- Mock payment proves knowledge of a shared secret — it is not cryptographic on-chain settlement. It exists only to exercise the request/response shape.
- No replay protection in the sandbox (any valid signature can be reused). Real x402 settlement handles this.
- The synthetic monthly rate is intentionally noisy; single-endpoint inflation reads jump around, which is itself a good classroom point.
Instalación
Añade argentina price index a tu cliente. Elige el que uses.
claude mcp add --transport http argentina-price-index https://api.oscar-lopez.com/mcpcodex mcp add argentina-price-index --url https://api.oscar-lopez.com/mcp{
"mcpServers": {
"argentina-price-index": {
"url": "https://api.oscar-lopez.com/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"argentina-price-index": {
"type": "http",
"url": "https://api.oscar-lopez.com/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"argentina-price-index": {
"url": "https://api.oscar-lopez.com/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"argentina-price-index": {
"serverUrl": "https://api.oscar-lopez.com/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Puntuación
39 / 100
Incompleta
- Documentación20/25
- Mantenimiento19/25
- Confianza6/20
- Capacidad0/15
- Instalación12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 16 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Historial de versiones
| Versiones | Publicada |
|---|---|
| 0.1.0Última | 15 ago 2026 |