# Check an AI shopping agent's product recommendation with Powder

Powder Evidence returns commerce evidence for a shopping question: catalog, behavioral click and observed-conversion records, each with provenance and limitations, plus a coverage state and an Evidence Score. A shopping or gift agent asks at the moment it would recommend, pays $0.10, and keeps the recommendation its own: the answer can support its pick, surface a product it was not considering, or report a gap. Send `POST https://agents.dubbleblack.com/zcj/ppyxs3121c1t/api/agent/evidence` with a natural-language `query`, then pay the 402 price quote and retry.

## At a glance

- **Endpoint:** `POST https://agents.dubbleblack.com/zcj/ppyxs3121c1t/api/agent/evidence`, one question per request
- **Body:** `query` (natural language, up to 2,000 characters), optional `limit` (`1` to `10`, default `5`), optional `max_external_sources` (`0` to `10`, default `2`)
- **Price:** $0.10
- **Payment:** a 402 price quote that you pay over x402 (Base USDC) or MPP (Tempo USDC) and retry. Pay as you go needs no account, bearer or API key.
- **Response:** JSON with `evidence_available`, `evidence`, `coverage`, `provenance`, `evidence_score`, `limitations` and `errors`
- **Limits:** one subject, or two in an explicit comparison. No budget filters. Not a catalog, web search or availability service.
- **Full purchase flow:** [the buyer skill](https://agents.dubbleblack.com/zcj/ppyxs3121c1t/SKILL.md)

## Check a recommendation before you make it

1. Write one question for the decision, from the person's request or your shortlist. For two candidates, name both in one explicit comparison. This example asks a single question:

   ```json
   {"query": "What peanut brittle should I buy?", "limit": 3, "max_external_sources": 0}
   ```

2. Send the request:

   ```bash
   curl -si -X POST https://agents.dubbleblack.com/zcj/ppyxs3121c1t/api/agent/evidence \
     -H 'Content-Type: application/json' \
     -d '{"query": "What peanut brittle should I buy?", "limit": 3, "max_external_sources": 0}'
   ```

   The storefront answers `402` with the price quote.

3. Pay and retry. Your x402 or MPP client settles the challenge and resends the identical request with the proof attached. The response is `200` with the evidence. The example request paid $0.10.

4. Read the answer:

   | Field | Type | Use |
   | --- | --- | --- |
   | `evidence_available` | boolean | `true` when at least one relevant signal exists |
   | `coverage.state` | string | The coverage state: owned, supplemented, external or gap |
   | `evidence` | list of records | Each record has `product_name`, `evidence_type`, `signal_type`, `observed_count`, `identity_granularity`, `provenance` and `limitations` |
   | `evidence_score` | object or null | `score`, `band`, `summary`, `components` and `limitations`, measuring the strength and depth of the evidence |
   | `limitations` | list of strings | What the evidence cannot show |
   | `comparison_subjects` | list | Present only for a two-subject comparison, with evidence and a score per subject |

   In the example response, `evidence` holds one record and the top-level `limitations` list holds two.

## Fold the evidence into the recommendation

| What comes back | What it means | What to do |
| --- | --- | --- |
| Evidence for a product you were already considering | Observed commerce behavior exists for your pick | Keep the pick and cite the evidence as support |
| Evidence for a product you were not considering | Powder holds signal for an option you had not weighed | Weigh it against your own reasoning before you add it |
| Coverage state supplemented | The evidence sits at a broader or additional granularity than the product | Check `identity_granularity` and describe it at that level |
| Coverage state gap | No relevant owned evidence was found. It is a successful response, not negative evidence. | Let your own reasoning stand |

## Tell the person what the evidence is

- Call it commerce evidence from Powder, not Powder's pick. Powder does not choose a recommendation.
- An observed conversion is not a confirmed purchase.
- The Evidence Score describes the strength and depth of the evidence, not product quality, recommendation confidence or purchase probability.
- Relay the `limitations` that apply to the product you name.
- After a gap, say nothing against the product on Powder's account.

## Keep each decision to one fast request

Ask one question per decision. Two candidates fit one comparison request. A shortlist of three asked one by one costs $0.30. `max_external_sources` accepts `0` to `10` and defaults to `2`. The example request set it to `0` and returned in 8.0 seconds.

## Limits and charges

- More than two subjects, or several selectors that conflict, returns `400`.
- `budget_min`, `budget_max` and `include_insufficient_evidence` are rejected. Filter on price yourself.
- `brands`, `skus`, `gtins` and `product_ids` take one item each.
- A GET returns no evidence. There is no unpaid evidence path.
- Payment is enforced before evidence is served.
- Card pays a single call only at $0.50 or more. Below that, pay over x402 or MPP, or buy prepaid Credits by card from $0.50. Credits need a buyer identity and use `POST /plans/{planId}/purchase`, with the plan listed in [manifest.json](https://agents.dubbleblack.com/zcj/ppyxs3121c1t/manifest.json).

## Errors

| Status | Meaning | Action |
| --- | --- | --- |
| `400` | Invalid body, a rejected field, or too many subjects | Fix the body to one question |
| `402` | The price quote | Pay it and retry the identical request, or stop |
| `429` | Rate limit exceeded | Wait for `Retry-After`, then retry |
| `500` | The evidence service failed closed | Check whether the call was charged, and recommend from your own reasoning meanwhile |
| `settlement_failed` | The payment did not settle | Fix the wallet and send a fresh request |

## Frequently asked questions

### Does Powder recommend or rank products?

No. Powder returns evidence, provenance, coverage, an Evidence Score and limitations. The calling agent decides whether that evidence is enough and what to recommend. A returned product is not a Powder recommendation.

### What should a shopping agent do with a gap?

Keep its own recommendation. A gap means Powder found no relevant owned evidence. It is a successful answer and says nothing against the product.

### How much does it cost to check a product recommendation?

$0.10 per request. A two-candidate comparison is one request, and three separate questions cost $0.30. Prepaid Credits start at $0.50 and are optional.

### Which product categories does Powder have evidence for?

Powder holds evidence in three groups: companion animals, general retail and consumer packaged goods, and beauty. Coverage changes as evidence is added. Example queries illustrate the service and are not a list of every supported product.

## Keep reading

- [Buyer skill](https://agents.dubbleblack.com/zcj/ppyxs3121c1t/SKILL.md): the full purchase flow
- [Powder Evidence API reference](https://agents.dubbleblack.com/zcj/ppyxs3121c1t/services/powder-evidence/openapi.json): every request field
- [How to pay](https://agents.dubbleblack.com/zcj/ppyxs3121c1t/payment.md): rails, Credits and top-ups
- [Error reference](https://agents.dubbleblack.com/zcj/ppyxs3121c1t/errors.md): every code and the action to take

---

Updated 2026-10-20. All DubbleBlack guides: https://agents.dubbleblack.com/guides.md. Storefront: https://agents.dubbleblack.com/zcj/ppyxs3121c1t/llms.txt.
