io.github.oscarlopez-gif/argentina-price-index

Registre officiel E-commerce

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

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

Remote (streamable-http)
Claude Code
claude mcp add --transport http argentina-price-index 'https://api.oscar-lopez.com/mcp'
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "argentina-price-index": {
            "type": "http",
            "url": "https://api.oscar-lopez.com/mcp"
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. Paid Door — Argentina food & beverage price index (Cloudflare sandbox)
  2. What's here
  3. Endpoints
  4. Run it locally
  5. Deploy to your account
  6. Sandbox → real (later)
  7. Notes / caveats

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 /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 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.

Questions fréquentes

Qu'est-ce que io.github.oscarlopez-gif/argentina-price-index ?

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

Comment installer io.github.oscarlopez-gif/argentina-price-index ?

Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http argentina-price-index 'https://api.oscar-lopez.com/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.oscarlopez-gif/argentina-price-index ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

io.github.oscarlopez-gif/argentina-price-index est-il open source ?

Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.

Qui maintient io.github.oscarlopez-gif/argentina-price-index ?

Il est publié par oscarlopez-gif. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.