# Wheelie validation quote fixture

Agent docs index: /llms.txt

Wheelie exposes a fixture-only quote contract so autonomous agents can inspect a
price-basis response shape and budget receipt fields without any payment flow.

## Support level

- `support_level`: `preview`
- `support_state`: `fixture_only`
- `mode`: `fixture_only_no_payment`
- Money movement: **disabled** (`money_movement_enabled=false`)

Agents must not treat this as a live paid endpoint. The fixture never asks for
payment credentials, never charges, and never pays providers.

## Agent discovery

Machine-readable schema:

- OpenAPI: [/schemas/wheelie/paid-proof-quote.openapi.json](/schemas/wheelie/paid-proof-quote.openapi.json)
- Operation: `POST /v1/wheelie-paid-services/quote`
- MCP tool name: `wheelie.quote_paid_validation`

The OpenAPI route is a contract fixture, not a deployed payment endpoint. Public
agents should treat it as a schema and quote-shape description unless a public
Wheelie command or hosted endpoint explicitly reports
`money_movement_enabled=true` for the same account and operation scope.

## Quote response shape

Expected machine-readable fields include:

```json
{
  "schema_version": "wheelie.paid_services_quote_response.v1",
  "mode": "fixture_only_no_payment",
  "service_id": "wheelie.hermetic_validation.small",
  "quote_id": "quote_wheelie_hermetic_validation_small_hermetic_small_fixture",
  "estimated_amount": { "amount_micro_usd": 1250000, "currency": "USD" },
  "max_cap": { "amount_micro_usd": 2000000, "currency": "USD" },
  "support_level": "preview",
  "support_state": "fixture_only",
  "next_action": "approve_budget",
  "money_movement_enabled": false,
  "evidence_record_schema_ref": "https://wheelie.dev/schemas/wheelie/validation-evidence-record.schema.json#deterministic-validation-evidence-record-v1"
}
```

If the request omits budget authorization fields, the prototype returns
`next_action=run_no_money_demo`. If the service id, validation environment,
validation tier, or cap is unsupported, it returns `next_action=unsupported` and
still keeps money movement disabled.

## Required budget authorization fields

A live path would require typed budget authorization before spend:

| Field | Required | Purpose |
| --- | --- | --- |
| `agent_ref` | yes | Stable ref for the autonomous agent asking for the quote. |
| `represented_principal_ref` | yes | User, project, or organization on whose behalf the agent would spend. |
| `max_cap.amount_micro_usd` | yes | Upper bound the agent is authorized to spend. |
| `budget_authorization_ref` | yes | Approval/grant ref. Accepted as a dry-run string only here. |

## MCP tool sketch

```json
{
  "name": "wheelie.quote_paid_validation",
  "description": "Request a fixture-only quote for a Wheelie validation service. Money movement is disabled.",
  "input_schema": {
    "type": "object",
    "required": ["service_id"],
    "properties": {
      "service_id": { "type": "string" },
      "validation_environment": { "type": "string" },
      "validation_tier": { "type": "string" },
      "max_cap": { "type": "object" },
      "agent_ref": { "type": "string" },
      "represented_principal_ref": { "type": "string" },
      "budget_authorization_ref": { "type": "string" },
      "run_no_money_demo": { "type": "boolean" }
    }
  },
  "output_schema_ref": "/schemas/wheelie/paid-proof-quote.openapi.json#/components/schemas/PaidServicesQuoteResponse"
}
```

## Sample agent prompt

```text
You may request a no-money quote for a Wheelie validation service. Use service_id=wheelie.hermetic_validation.small and max_cap.amount_micro_usd=2000000. If the response says next_action=approve_budget, show the quote_id, estimated_amount, max_cap, required_budget_authorization_fields, support_state, and evidence_record_schema_ref to the user. Do not claim payment is enabled unless money_movement_enabled is true. If next_action=run_no_money_demo, run only the fixture demo. If next_action=unsupported, stop and report the typed reason.
```
