Agent Product Graph

Developers

Get a key, make one request, and use REST or MCP over the same service layer.

Make a request

curl -s "https://api.napexa.com/v1/products/search" \
  -H "Authorization: Bearer $APG_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "battery for DeWalt DCD796N", "limit": 5}'

What comes back

{
  "request_id": "req_...",
  "coverage": {
    "merchants_searched": 4,
    "merchants_known": 27,
    "market_complete": false,
    "limitations": ["2 of 6 offers do not publish a complete delivered price..."]
  },
  "results": [{
    "product": { "id": "prd_...", "title": "DeWalt DCB184 18V XR 5.0Ah Battery" },
    "match": { "type": "compatible", "confidence": "0.99", "identity": "confirmed" },
    "best_offer": {
      "price": { "total": "62.49", "currency": "GBP", "completeness": "complete",
                 "comparable_as_total": true },
      "availability": "in_stock"
    },
    "purchase_ready": true,
    "ranking_explanation": ["Confirmed compatibility evidence", "complete delivered price"]
  }],
  "price_claim": "lowest known item price of the 4 of 27 merchants searched",
  "ranking": { "config_version": "v1-default", "commercial_signal_used": false }
}

Fields worth reading before you build

purchase_ready

The only field that means 'safe to act on'. False whenever stock is unknown, the price is not a complete total, identity is not confirmed, or the observation is stale.

price.completeness

complete, shipping_estimated, tax_estimated, location_required, incomplete. Only 'complete' produces a total, and only totals may be compared as totals.

coverage.market_complete

Always false. Use coverage.merchants_searched and merchants_known when phrasing any claim to a user.

match.identity

confirmed, high_confidence, probable, candidate. Only the first two are safe to base a purchase recommendation on.

MCP

A stateless MCP server exposes the same services as fourteen tools. Point your client at https://mcp.napexa.com/mcp with your key in the Authorization header. Sessions carry no credential, so any instance serves any request.

{
  "mcpServers": {
    "napexa": {
      "url": "https://mcp.napexa.com/mcp",
      "headers": { "Authorization": "Bearer apg_live_YOUR_KEY" }
    }
  }
}

Get a free key

Required: terms of service

These terms form the service contract. Read the full text on the terms page before accepting.

Optional: data-products consent

Optional data-products consent: I agree that usage linked to my account may be included in account-attributed demand analysis. We may combine usage from multiple accounts and sell only aggregated, non-personal derivatives above a k-anonymity threshold to data customers. This consent is optional, does not affect account or API access, and may be withdrawn at any time.

We store the key as a peppered hash. It is shown once and cannot be retrieved again.