# Trust402 Procurement Plan

> Trust402 Procurement Plan is a paid API for AI agents from trust402.aztecbeacon.uk, paid per call via x402, $0.02/call, status unknown (last checked 2026-09-15).

Evaluates a set of x402 pay-per-call API candidates against a buyer goal and budget, producing a scored procurement recommendation.

## Facts

- Endpoint: POST https://trust402.aztecbeacon.uk/api/procurement/plan
- Price: $0.02/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/trust402-procurement-plan-8fa844d4
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_SPObzebsEpFGtvIAG4rFS

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability trust402-procurement-plan-8fa844d4 -d '<json body>'
```

Example prompt: I have three x402 endpoints I'm considering — https://api.example.com/search, https://api.foo.com/enrich, and https://api.bar.com/classify — with prices of $0.01, $0.03, and $0.02 respectively on Base (eip155:8453). My goal is to enrich customer records and my total budget is $2.00. Can you build a procurement plan and tell me which ones are worth approving?

## When to prefer this

Use this endpoint when an AI agent needs to autonomously decide which x402 pay-per-call APIs to purchase or invoke, especially when comparing multiple candidates against a fixed budget and a specific task goal. It is the right choice when you need a structured trust assessment and procurement recommendation before committing micropayments, rather than paying blindly or manually comparing endpoints.

## Known failure modes

- Missing or empty 'goal' field causes unscored or rejected plan
- Budget of 0 or below may result in all candidates being rejected
- Candidates with no 'endpoint' or 'url' field fail schema validation
- Malformed payTo address (not a valid 0x Ethereum address) causes candidate rejection
- Unknown or unsupported network string may reduce scoring confidence
- Empty candidates array returns a trivially empty plan
- Price fields with non-numeric strings may be ignored or cause parse errors

## How this service works

Create a bounded spend plan without spending money.

## Output

A JSON object with an 'ok' boolean, the tool name ('procurement.plan'), and a 'recommendation' field (e.g. 'approve-after-review') indicating whether the buyer should proceed with the candidate set, along with any ranked or scored breakdown of the candidates.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "goal": {
   "type": "string",
   "description": "Buyer goal for selecting x402 resources."
  },
  "budgetUsd": {
   "type": "number",
   "description": "Maximum spend budget for the plan or quote."
  },
  "candidates": {
   "type": "array",
   "items": {
    "type": "object",
    "anyOf": [
     {
      "required": [
       "endpoint"
      ]
     },
     {
      "required": [
       "url"
      ]
     }
    ],
    "properties": {
     "id": {
      "type": "string",
      "description": "Stable candidate identifier used in rankings and receipts."
     },
     "url": {
      "type": "string",
      "format": "uri",
      "description": "Alternate field for the x402 resource endpoint."
     },
     "name": {
      "type": "string",
      "description": "Human-readable resource name."
     },
     "x402": {
      "type": "object",
      "description": "Optional parsed x402 challenge metadata."
     },
     "asset": {
      "type": "string",
      "description": "Payment asset address or symbol."
     },
     "payTo": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$"
     },
     "price": {
      "oneOf": [
       {
        "type": "number",
        "minimum": 0
       },
       {
        "type": "string"
       }
      ],
      "description": "Alternate price field accepted by Trust402."
     },
     "accept": {
      "type": "object",
      "description": "Optional single x402 accept object."
     },
     "has402": {
      "type": "boolean",
      "description": "Whether the endpoint is known to return an x402 challenge."
     },
     "network": {
      "type": "string",
      "description": "x402 payment network, for example eip155:8453."
     },
     "endpoint": {
      "type": "string",
      "format": "uri",
      "description": "HTTPS x402 resource endpoint."
     },
     "metadata": {
      "type": "object",
      "description": "Additional public-safe metadata used during scoring."
     },
     "observed": {
      "type": "object",
      "description": "Optional probe observations such as status or latency."
     },
     "priceUsd": {
      "oneOf": [
       {
        "type": "number",
        "minimum": 0
       },
       {
        "type": "string"
       }
      ],
      "description": "Advertised resource price in USD."
     },
     "hasOpenApi": {
      "type": "boolean",
      "description": "Whether the origin publishes OpenAPI metadata."
     },
     "openapiUrl": {
      "type": "string"
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "tool": "procurement.plan",
  "recommendation": "approve-after-review"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/trust402-procurement-plan-8fa844d4/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from trust402.aztecbeacon.uk](https://www.zero.xyz/host/trust402.aztecbeacon.uk/llms.txt)
