Skip to main content

report_plan_outcome

Report the outcome of an action to the governance agent. Called by the orchestrator (buyer-side agent) after a seller responds. This is the “after” half of the governance loop — it tells the governance agent what actually happened so it can update its state and flag any issues. Sellers do not call this task. They report delivery data via check_governance with phase: "delivery".

Seller response (after create_media_buy)

{
  "tool": "report_plan_outcome",
  "arguments": {
    "plan_id": "plan_q1_2026_launch",
    "check_id": "chk_xyz789",
    "outcome": "completed",
    "seller_response": {
      "media_buy_id": "mb_seller_456",
      "packages": [
        {
          "package_id": "pkg_001",
          "product_id": "premium_video_300k",
          "budget": 150000,
          "targeting_overlay": {
            "geo": { "include": [{ "type": "country", "code": "US" }] },
            "viewability": { "standard": "mrc", "threshold": 50 }
          }
        }
      ],
      "planned_delivery": {
        "geo": { "countries": ["US"] },
        "channels": ["olv"],
        "start_time": "2026-03-15T00:00:00Z",
        "end_time": "2026-06-15T00:00:00Z",
        "total_budget": 150000,
        "currency": "USD"
      },
      "creative_deadline": "2026-03-20T00:00:00Z"
    }
  }
}

Response (no issues)

{
  "outcome_id": "out_001",
  "status": "accepted",
  "committed_budget": 150000,
  "plan_summary": {
    "total_committed": 425000,
    "budget_remaining": 75000
  }
}
The governance agent updates its state: budget is now committed based on the seller’s confirmed amount, and the media buy is tracked.

Response (discrepancy found)

In this alternative scenario for the same action, the seller modified the request:
{
  "outcome_id": "out_002",
  "status": "findings",
  "committed_budget": 120000,
  "findings": [
    {
      "category_id": "seller_verification",
      "severity": "warning",
      "explanation": "Seller reduced budget from $150,000 to $120,000 and added geo targeting for CA that was not requested.",
      "details": {
        "discrepancies": [
          { "field": "packages[0].budget", "requested": 150000, "received": 120000 },
          { "field": "packages[0].targeting_overlay.geo.include", "requested": ["US"], "received": ["US", "CA"] }
        ]
      }
    }
  ],
  "plan_summary": {
    "total_committed": 395000,
    "budget_remaining": 105000
  }
}
The governance agent still commits the seller’s actual amount ($120K, not the requested $150K) but returns findings for the orchestrator to act on.

Delivery data (periodic reporting)

{
  "tool": "report_plan_outcome",
  "arguments": {
    "plan_id": "plan_q1_2026_launch",
    "outcome": "delivery",
    "delivery": {
      "media_buy_id": "mb_seller_456",
      "reporting_period": {
        "start": "2026-03-15T00:00:00Z",
        "end": "2026-03-22T00:00:00Z"
      },
      "impressions": 1250000,
      "spend": 18750,
      "cpm": 15.00,
      "viewability_rate": 0.72,
      "completion_rate": 0.65
    }
  }
}

Response (on track)

{
  "outcome_id": "out_del_001",
  "status": "accepted"
}

Response (anomaly detected)

{
  "outcome_id": "out_del_002",
  "status": "findings",
  "findings": [
    {
      "category_id": "budget_authority",
      "severity": "warning",
      "explanation": "Spend is pacing 62% above plan. At current rate, budget will be exhausted 5 weeks early.",
      "details": {
        "planned_weekly_spend": 11538,
        "actual_weekly_spend": 18750,
        "overpace_pct": 62,
        "projected_exhaustion": "2026-05-03T00:00:00Z"
      }
    }
  ]
}

Failed actions

If the seller rejected the request, report it so the governance agent can update plan state:
{
  "tool": "report_plan_outcome",
  "arguments": {
    "plan_id": "plan_q1_2026_launch",
    "check_id": "chk_xyz789",
    "outcome": "failed",
    "error": {
      "code": "PRODUCT_UNAVAILABLE",
      "message": "Product premium_video_300k is no longer available."
    }
  }
}
{
  "outcome_id": "out_003",
  "status": "accepted",
  "committed_budget": 0,
  "plan_summary": {
    "total_committed": 275000,
    "budget_remaining": 225000
  }
}

Fields

Request

FieldTypeRequiredDescription
plan_idstringYesThe plan this outcome is for.
check_idstringConditionalThe check_id from check_governance. Links the outcome to the governance check that authorized it. Required for completed and failed outcomes.
outcomeenumYescompleted, failed, or delivery.
seller_responseobjectNoThe seller’s full response. Required when outcome is completed.
seller_response.media_buy_idstringNoSeller’s media buy identifier.
seller_response.committed_budgetnumberNoTotal budget committed across all confirmed packages. When present, the governance agent uses this directly instead of summing individual package budgets.
seller_response.packagesarrayNoConfirmed packages with actual budget and targeting.
seller_response.planned_deliveryobjectNoWhat the seller said it will deliver. When seller-side governance is not configured, this is the governance agent’s only view of the seller’s delivery parameters.
seller_response.creative_deadlinestringNoISO 8601 deadline for creative submission.
deliveryobjectNoDelivery metrics. Required when outcome is delivery.
delivery.media_buy_idstringNoThe media buy being reported on.
delivery.reporting_periodobjectNoStart and end timestamps for the reporting window.
delivery.impressionsintegerNoImpressions delivered in the period.
delivery.spendnumberNoSpend in the period.
delivery.cpmnumberNoEffective CPM for the period.
delivery.viewability_ratenumberNoViewability rate (0-1).
delivery.completion_ratenumberNoVideo completion rate (0-1).
errorobjectNoError details. Required when outcome is failed.
error.codestringNoError code from the seller.
error.messagestringNoHuman-readable error description.

Response

FieldTypeDescription
outcome_idstringUnique identifier for this outcome record.
statusenumaccepted (state updated, no issues) or findings (issues detected).
committed_budgetnumberBudget committed from this outcome (present for completed/failed outcomes).
findingsarrayPresent only when status is findings.
findings[].category_idstringWhich validation category flagged the issue.
findings[].severityenuminfo, warning, or critical.
findings[].explanationstringHuman-readable description of the issue.
findings[].detailsobjectStructured details for programmatic consumption.
plan_summaryobjectUpdated plan budget state (present for completed/failed outcomes).

Error codes

CodeRecoveryDescription
PLAN_NOT_FOUNDcorrectableNo plan with this ID.
CHECK_NOT_FOUNDcorrectableNo governance check with this check_id.
CAMPAIGN_NOT_FOUNDcorrectableNo campaign with this governance_context in the plan.
CAMPAIGN_SUSPENDEDcorrectablePlan is suspended pending human review. Outcome reporting is blocked until the escalation is resolved.