Back to Browse

Argentina Price Index MCP Server

Developer ToolsLow Risk10.0MCP RegistryRemote
Free

Server data from the Official MCP Registry

Daily Argentina food & beverage price index, source-cited from public retailer prices.

About

Daily Argentina food & beverage price index, source-cited from public retailer prices.

Remote endpoints: streamable-http: https://api.oscar-lopez.com/mcp

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (1 strong, 0 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry. 1 finding(s) downgraded by scanner intelligence.

3 tools verified · Open access · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

How to Connect

Remote Plugin

No local installation needed. Your AI client connects to the remote endpoint directly.

Add this to your MCP configuration to connect:

{
  "mcpServers": {
    "io-github-oscarlopez-gif-argentina-price-index": {
      "url": "https://api.oscar-lopez.com/mcp"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

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.sql is 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

EndpointTierReturns
GET /v1/headline?country=AR&category=food_beveragesfreelatest index value + monthly rate (the teaser)
GET /v1/index?country=AR&category=food_beveragespaid ($0.02)full daily series
GET /v1/latest?country=AR&category=food_beveragespaid ($0.02)latest reading + methodology
POST /mcpMCP 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 rate
  • get_ar_food_price_index (paid, $0.02 mock-x402) — full daily series; call once with no _payment to receive a challenge, then retry with arguments._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: /mcp here 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's agents McpAgent, 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)

  1. Real data: replace seed/generate.mjs with a scheduled Worker that scrapes 1–2 Argentine online grocers daily into price_observations.
  2. 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.
  3. Move the secret: npx wrangler secret put MOCK_PAYMENT_SECRET instead of the plain var.
  4. Expose as MCP so any AI agent (including this assistant) can call get_index directly.
  5. Materialize index_series as 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.

Reviews

No reviews yet

Be the first to review this server!