For agents: query the Lantern Works deal feed

The catalog is a public, read-only JSON feed. No auth, no API key, no rate-limited endpoint: fetch the file and filter locally. It currently lists 156 deals (schema 1.2.0, feed updated 2026-10-26T10:15:00-04:00).

Endpoints

Stable versioned feedhttps://thelanternworks.com/api/v1/deals.json
Feed (same bytes)https://thelanternworks.com/deals.json
JSON Schemahttps://thelanternworks.com/schema.json (draft 2020-12, version 1.2.0)
Agent manifesthttps://thelanternworks.com/agent.json
Mirrorgist raw deals.json (byte-identical)

Pin to /api/v1/deals.json for integrations. Check schema_version: minor bumps only add fields or enum values.

Record shape

Each item in deals[] has: id, title, category, tags, advertiser, offer_type, affiliate, price_usd, list_price_usd, currency, unit, billing_period, promo_code, redeem_url, expires_at, verified_at, updated_at, agent_instructions, plus optional docs_url, source_url, pricing_note, claim_note. See the schema for types.

Offer types

offer_typeMeaningDeals
verified_discountVendor-published discount or code.6
free_tierOngoing free plan.23
trialTime-limited or one-time free credit.5
standard_referralNormal pricing through a signup/referral link (no discount).119
credit_only_referralReferral where the referrer earns platform credit; no buyer discount.3

Examples

curl -fsSL https://thelanternworks.com/api/v1/deals.json   | jq '[.deals[] | select(.category=="search" and .offer_type=="free_tier") | {id, advertiser, unit, redeem_url}]'
import json, urllib.request
feed = json.load(urllib.request.urlopen("https://thelanternworks.com/api/v1/deals.json"))
cheap = [d for d in feed["deals"] if d["price_usd"] is not None and d["price_usd"] <= 10]
python3 query_deals.py --category search --free-tier --json

query_deals.py is in the repo; the feed's query object documents the shared filter contract.

Skill and MCP

Handling the data