---
title: "Replay recorded proposals against a proposed mandate"
method: POST
path: "/v1/commerce/mcp/agent/forecast"
---

# Replay recorded proposals against a proposed mandate

`POST /v1/commerce/mcp/agent/forecast`

## Request

- Base URL: `https://api.decionis.com`
- URL: `https://api.decionis.com/v1/commerce/mcp/agent/forecast`
- Auth: HTTP bearer

For the previous three complete UTC months, the recorded proposals of the mandate's action families on its platforms from the organization's own operations ledger, and the declared face value of those that proceeded in the mandate currency, compared with the mandate's budgets. Proposals whose kind was not captured are counted apart. No history reads as insufficient history. Records nothing; never a prediction.

## Request body

- ForecastInput
  - `objective` 'hold_margin_floor' | 'hold_inventory_floor' | 'review_orders' | 'review_refunds' | 'review_promotions' | 'release_payments', required
  - `scope` object, required
    - `platforms` string[], required
    - `skus` string[]
    - `order_ids` string[]
  - `budget` object, required
    - `actions` integer, required
    - `exposure` object, required
      - `amount` number, required
      - `currency` string, required
  - `agent` object, required
    - `id` string, required

## Response `200`

Validated bounded response; private, no-store

- Forecast
  - `version` 'commerce-agent-run-v1', required
  - `org_id` string, uuid, required
  - `agent_id` string, required
  - `objective` 'hold_margin_floor' | 'hold_inventory_floor' | 'review_orders' | 'review_refunds' | 'review_promotions' | 'release_payments', required
  - `platforms` string[], required
  - `currency` string, required
  - `source` 'operations_ledger' | 'none', required
  - `months` object[], required
    - `period` object, required
      - `kind` 'utc_month', required
      - `starts_at` string, date-time, required
      - `ends_at` string, date-time, required
    - `actions` integer, required
    - `untyped_actions` integer, required
    - `exposure` number, required
    - `fits_actions` boolean, required
    - `fits_exposure` boolean, required
  - `verdict` 'fits' | 'exceeds' | 'insufficient_history', required
  - `execution_available` unknown, required

## Other responses

- `400`: Malformed, unconfirmed, mismatched or dossier-less PROCEED input
- `401`: Missing or invalid credential
- `403`: Write scope, role or dossier access denied
- `404`: Feature disabled, run or dossier unavailable to this organization
- `409`: Rebound idempotency key or dossier mismatch; never automatically retry a write
- `413`: Request exceeds route byte limit
- `429`: Durable identity/IP limit exceeded; Retry-After supplied
- `503`: Authority, storage or evidence unavailable; completion may be unconfirmed

---

[API](https://skmtc.dev/decionis/apis/decionis-commerce-gate-api.md) · [All operations](https://skmtc.dev/decionis/apis/decionis-commerce-gate-api/llms.txt) · [OpenAPI document](https://skmtc.dev/decionis/apis/decionis-commerce-gate-api/revisions/9fecb7109bf8?raw)
