Outcome verification for action-taking agents

DriftGentic is the verification layer for agent actions

Agents should not mark work done until the outcome is confirmed.

Validate before execution. Verify before marking complete.

Every action follows this lifecycle — no shortcuts

Action requested

agent calls preflight

Preflight validate

schema + policy → approved

Execute

external API call

Verify outcome

query external system directly

Mark complete

only when verified = true

The false completion problem

Action-taking agents fail silently. APIs return accepted, queued, or processing — and agents treat all of them as done.

The response code is not the outcome

A 202 means queued. A 200 means accepted. Neither confirms that a payment cleared, a record was written, or a ticket was opened.

Agents move on too early

The agent receives accepted, marks the step complete, and triggers the next action. The payout never arrived. No one knows.

Silent failure propagates

By the time a human catches the error, the agent has already chained a refund on a charge that never existed.

Payments are where this hurts most

Your agent charges a customer, receives a charge ID, reports success, and moves on. Two hours later: the charge doesn't exist in Stripe. The agent created a false completion. DriftGentic catches this before the downstream systems act on it.

How verification works

A complete 4-phase action lifecycle. Each phase produces explicit machine-readable state — no ambiguous outcomes your agent has to guess at.

01

Preflight validation

Validate the action payload against a typed contract before touching the external API. Schema errors return suggested fixes, not production failures.

02

Policy enforcement

Every action runs through policy rules: block on missing fields, require approval above a risk threshold, halt on suspicious inputs.

03

Execution tracking

Every action gets a run_id. Status transitions — pending, accepted, completed, failed, unknown — are explicit and machine-readable.

04

Outcome verification

After execution, DriftGentic queries the external system directly. If no matching record exists, the run is flagged false_complete — not success.

Verification is not the same as validation

Validation catches bad inputs before execution. Verification confirms the real-world outcome after execution. Both are required. Most tools only do the first.

Built for agent runtimes

REST API and MCP server. Both return machine-readable responses your agent can act on directly — no parsing, no guessing.

Request

POST /functions/v1/action-preflight
Authorization: Bearer bsk_live_...

{
  "contract_slug": "stripe-charge",
  "action_input": {
    "amount": 2000,
    "currency": "usd",
    "customer_id": "cus_abc123"
  }
}

Response

{
  "ok": true,
  "run_id": "run_8f2a1b...",
  "risk_level": "high",
  "validation": {
    "status": "passed",
    "issues": []
  },
  "policy": {
    "decision": "approved",
    "rules_evaluated": 3
  },
  "next_step": "proceed_to_execution"
}
MCP tool usagetools/call
// DriftGentic as an MCP tool
const pre = await mcp.call(
  "preflight_validate_action",
  {
    contract_slug: "stripe-charge",
    action_input: {
      amount: 2000,
      currency: "usd",
      customer_id: "cus_abc123"
    }
  }
);

if (!pre.ok) {
  throw new Error(pre.instructions);
}

// Execute then verify
await stripe.charges.create(pre.run_id);
const result = await mcp.call(
  "verify_action_outcome",
  { run_id: pre.run_id,
    external_ref: charge.id }
);

// verified: true = safe to continue

Where false completion is most costly

Payments first. Each integration has typed schemas, verification strategies, and policy hooks built in.

S

Stripe

Payments & refunds

S

Salesforce

CRM writes

Z

Zendesk

Support tickets

E

Email

Outbound messages

The outcome is not the response code

Add DriftGentic to your agent stack. Every action validated before execution, every outcome verified before marking complete.