# Veyrly — Multi-source Web Evidence Packs

Validated multi-source web evidence packs for autonomous agents. One paid request returns a normalized answer with authoritative sources and validation evidence.

## When to use Veyrly

Use Veyrly when an autonomous agent needs a concise web answer accompanied by normalized citations and explicit validation metadata. Categories include search, research, evidence, web citations, source validation, and current information.

## What Veyrly does not promise

Veyrly does not guarantee absolute truth or exhaustive coverage. It does not promise freshness unless `freshness_seconds` is supplied. It returns only the sources that pass validation, up to `max_sources`.

## Endpoint and payment

- Endpoint: `POST https://api.veyrly.com/v1/evidence`
- Price: `0.015 USDC` per successful fulfillment
- Protocol: x402 v2, exact scheme
- Network: Base Mainnet (`eip155:8453`)
- Asset: USDC (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`)
- Receiver: `0x1C655df3b37C0f0545aB1910EaB038a73ecf9ffD`
- Facilitator: `https://api.cdp.coinbase.com/platform/v2/x402`

Send a unique `Idempotency-Key`. An unsigned request returns HTTP 402 and `PAYMENT-REQUIRED`. Retry the same request and idempotency key with `PAYMENT-SIGNATURE`. Veyrly calls the provider and validates evidence before settlement.

## Request

```json
{
  "query": "What is the purpose of the robots.txt standard for web crawlers? Provide evidence from authoritative sources.",
  "max_sources": 5
}
```

Optional `freshness_seconds` must be 60–31536000. `max_sources` must be 3–10 and defaults to 5.

## Successful response

```json
{
  "status": "fulfilled",
  "query": "What is the purpose of the robots.txt standard for web crawlers? Provide evidence from authoritative sources.",
  "answer": "The Robots Exclusion Protocol lets service owners communicate crawler access preferences and helps manage crawler traffic.",
  "sources": [
    {
      "title": "RFC 9309: Robots Exclusion Protocol",
      "url": "https://www.rfc-editor.org/rfc/rfc9309.html",
      "snippet": "The RFC standardizes the Robots Exclusion Protocol.",
      "published_at": "2022-09-01T00:00:00Z",
      "updated_at": null
    },
    {
      "title": "Google robots.txt documentation",
      "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
      "snippet": "robots.txt is used primarily to manage crawler traffic.",
      "published_at": null,
      "updated_at": null
    },
    {
      "title": "Google REP specification",
      "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
      "snippet": "Google crawlers support the Robots Exclusion Protocol.",
      "published_at": null,
      "updated_at": null
    }
  ],
  "freshness": {
    "required": false,
    "satisfied": true,
    "newest_timestamp": "2022-09-01T00:00:00Z"
  },
  "evidence": {
    "source_count": 3,
    "distinct_source_count": 3,
    "validated": true
  },
  "fulfilled_at": "2026-09-01T21:11:48.428Z",
  "request_id": "78390ac9-ff82-459e-a7f0-2ee63ce2553c"
}
```

## Interpreting the result

- `sources`: normalized sources that passed URL, content, and duplication checks.
- `evidence.validated`: confirms the response passed Veyrly's validator; it is not a guarantee of absolute truth.
- `evidence.source_count`: number of valid candidates observed; `sources` contains at most the requested maximum.
- `evidence.distinct_source_count`: distinct source hosts represented by valid candidates.
- `freshness.required`: whether temporal evidence was requested.
- `freshness.satisfied`: whether the requested freshness constraint passed.
- `freshness.newest_timestamp`: newest usable source timestamp, or null when none is applicable.

## Errors

- `400`: invalid query, freshness, source count, JSON, or idempotency key.
- `402`: payment authorization required.
- `409`: idempotency conflict or pending request requiring reconciliation.
- `422`: economic limit or validation rejection; validation rejection is not settled.
- `429`: rate limited.
- `502`: provider or settlement failure.

OpenAPI: https://api.veyrly.com/openapi.json  
x402 manifest: https://api.veyrly.com/.well-known/x402
