DEEDSTASH

DEVELOPER PORTAL · REST + MCP

LOOT INTELLIGENCE

The product-truth API. Every item, priced by reality.

A canonical catalog of real-world products — tools, LEGO, GPUs, gear — with live resale price bands computed from real market flow. Facts only. Aggregate only. No user data, ever, on this surface.

Connect an agent REST reference

QUICKSTART · MCP

One line. Your agent knows what things are worth.

Loot Intelligence ships as a native Model Context Protocol server — streamable HTTP, stateless, spec 2025-03-26. Add it to Claude Code (or any MCP client) and your agent gets three tools: product_lookup, brand_intelligence, price_band.

Add the server — Claude Code

claude mcp add --transport http loot-intel https://api.lootlens.ai/mcp

Or any MCP client — mcpServers config

{
  "mcpServers": {
    "deedstash": {
      "type": "http",
      "url": "https://api.lootlens.ai/mcp"
    }
  }
}

api.deedstash.com is the canonical hostname and will answer here the moment its DNS finishes provisioning; until then, every example on this page uses api.lootlens.ai — the same worker, the same data, live right now.

Try it — handshake (response is the actual server output, unedited)

curl -s https://api.lootlens.ai/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
        "protocolVersion":"2025-03-26","capabilities":{},
        "clientInfo":{"name":"curl","version":"1.0"}}}'

{"jsonrpc":"2.0","id":1,"result":{
  "protocolVersion":"2025-03-26",
  "capabilities":{"tools":{"listChanged":false}},
  "serverInfo":{"name":"deedstash-loot-intelligence","version":"1.0.0"},
  "instructions":"Loot Intelligence: the DeedStash/LootLens canonical
    product catalog (the Loot Index) built from real-world scans plus
    open-source ingestion. Use product_lookup to identify one product by
    UPC barcode or brand+model; price_band for its live resale band with
    source provenance; brand_intelligence for a whole brand's product
    genealogy, lines, MSRPs and parent-company stock context. All prices
    are integer USD cents. Data is facts-only and aggregate-only — no
    user data exists on this surface."}}

Real transcript — product_lookup tool call (actual result)

curl -s https://api.lootlens.ai/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{
        "name":"product_lookup",
        "arguments":{"brand":"DeWalt","model":"DCD771"}}}'

{"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"{
  \"product\": {
    \"name\": \"DeWalt DCD771\",
    \"brand\": \"DeWalt\",
    \"category\": \"tools\",
    \"release_date\": null,
    \"discontinued_date\": null,
    \"msrp_cents\": null,
    \"currency\": \"USD\",
    \"status\": \"released\",
    \"line\": null
  },
  \"band\": {
    \"low\": 6100,
    \"median\": 6100,
    \"high\": 6100,
    \"sample_n\": 1,
    \"computed_at\": 1783199691
  },
  \"links\": {
    \"brand_intel\": \"/intel/brand/dewalt\"
  }
}"}],"isError":false}}

Real transcript — price_band with source provenance (actual result)

curl -s https://api.lootlens.ai/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{
        "name":"price_band",
        "arguments":{"brand":"DeWalt","model":"DCD771"}}}'

{"jsonrpc":"2.0","id":4,"result":{"content":[{"type":"text","text":"{
  \"product\": { \"name\": \"DeWalt DCD771\", \"brand\": \"DeWalt\" },
  \"links\": { \"brand_intel\": \"/intel/brand/dewalt\" },
  \"band\": {
    \"low\": 6100,
    \"median\": 6100,
    \"high\": 6100,
    \"sample_n\": 1,
    \"computed_at\": 1783199691
  },
  \"sources\": {
    \"comp_aggregate\": 1
  }
}"}],"isError":false}}

product_lookup

Resolve one product by UPC/EAN/GTIN barcode or brand + model. Normalization is aggressive: "DEWALT dcd-771" and "DeWalt DCD771" hit the same product. Returns catalog facts + live band.

brand_intelligence

A whole brand's product genealogy: lines with eras, release-date-ordered products, MSRP as a dated fact, bands where known, and parent-company stock context (DeWalt → SWK).

price_band

The live resale band alone, with per-source provenance counts — including proprietary realized-sale observations no aggregator has. Null when data is insufficient. Never fabricated.

REST REFERENCE

Two endpoints. Public. No key required to taste.

GET /intel/brand/:brand

Brand genealogy — product lines, eras, bands, totals, and parent-company ticker.

Request

curl https://api.lootlens.ai/intel/brand/dewalt

Response (live, unedited)

{
  "brand": "DeWalt",
  "brand_norm": "dewalt",
  "lines": [
    {
      "name": null,
      "era": null,
      "products": [
        {
          "name": "DeWalt DCD771",
          "category": "tools",
          "release_date": null,
          "discontinued_date": null,
          "msrp_cents": null,
          "currency": "USD",
          "status": "released",
          "band": {
            "low": 6100,
            "median": 6100,
            "high": 6100,
            "sample_n": 1
          }
        }
      ]
    }
  ],
  "totals": {
    "products": 1,
    "earliest_release": null,
    "catalog_completion_note": "Catalog reflects entries scanned by the
      community or ingested from open sources to date — a floor, never
      the full count of everything this brand ever made."
  },
  "ticker": "SWK"
}

GET /intel/product

One product's catalog facts + live band. Query by ?upc= or ?brand=&model=.

Request

curl "https://api.lootlens.ai/intel/product?brand=DeWalt&model=DCD771"

Response (live, unedited)

{
  "product": {
    "name": "DeWalt DCD771",
    "brand": "DeWalt",
    "category": "tools",
    "release_date": null,
    "discontinued_date": null,
    "msrp_cents": null,
    "currency": "USD",
    "status": "released",
    "line": null
  },
  "band": {
    "low": 6100,
    "median": 6100,
    "high": 6100,
    "sample_n": 1,
    "computed_at": 1783199691
  },
  "links": {
    "brand_intel": "/intel/brand/dewalt"
  }
}

Field glossary

band.low / median / highTrimmed p20 / p50 / p80 of observed resale prices over a 90-day window. Integer USD cents — 6100 means $61.00.
band.sample_nTotal market observations behind the band. Judge confidence yourself — it's printed so you can.
band.computed_atEpoch seconds when the band was computed. Judge freshness yourself.
band: nullNot enough honest observations. We return null and say so — we never fabricate a price.
msrp_centsLaunch MSRP as a dated fact, integer cents. Null when we don't know it.
statusreleased | upcoming | rumored — lifecycle state.
sources(price_band) Per-source provenance counts, e.g. {"ebay_sold": 22, "our_sold": 3}. our_sold and rollick_settlement are proprietary realized-sale observations no aggregator has.
catalog_completion_notePrinted on every brand response: the catalog is a floor, never the full brand history.

THE HONESTY DOCTRINE

Most pricing APIs guess. Ours refuses to.

An agent that acts on a fabricated price is worse than an agent with no price at all. Loot Intelligence is engineered around that fact — it is the differentiator, not a disclaimer.

Coverage is a floor.

Every brand response says it in plain text: the catalog reflects what's been scanned and ingested to date — never a claim to the full history of everything a brand ever made.

Insufficient data returns null.

No band? You get band: null and an explicit note. No interpolation, no "estimates," no confident nonsense. Sample size and compute time are printed so you can judge for yourself.

Every observation is graded.

Sources are trust-tiered by how hard they are to fake: marketplace-verified > real-money settlements > our own recorded sales > client-supplied comps. A comp claiming to be an eBay sold is still just a claim until an external API confirms it — so it's heavily damped in any math that moves money.

No user data. Ever.

This surface serves catalog facts and aggregate market bands only. No holdings, no scan history, no identities. Redaction is enforced in the query layer and walked in tests — not promised in a policy PDF.

KEYS & LIMITS

Taste free. Scale with a key.

Keyless

Every endpoint above works right now with no signup — rate-limited per IP. Enough to build, demo, and decide.

API key

Volume access with metered daily tiers, sent as Authorization: Bearer lk_…. Self-serve signup isn't live yet — for a key today, email [email protected] and tell us what you're building.

DEEDSTASH

Price by reality.

Connect an agent Get a key