Decision-1: judge a pending generate_video call as JSON state

Decision-1 accepts JSON as state. Pass the tool arguments of a pending Sume call and ask one noul question; keep keys and signed URLs out of the state.

5 min readSume
All posts

Yes, Microsoft-Decision-1 can judge a pending tool call, because its state can be JSON, not only text. Put the arguments of the pending Sume call in state, ask one noul question such as whether the call matches what the user asked for, and let a low probability send the call to a human. Strip anything secret first: the state goes to a third-party endpoint.

What to put in the state

Microsoft's page says the state can be text or JSON and that structured state tends to sharpen the task definition. For a paid hosted MCP call the useful fields are the ones a person would check before saying yes. Sume's tools and gates page lists idempotency_key, dry_run and max_spend_credits as the call-level controls; the other arguments are the payload.

State fields for a generate_video gate, Sume docs read 2026-10-13
Send to the decision modelNever send
The user's request in their wordsYour Sume API key or an OAuth token
payload.prompt, duration, resolution, aspect ratioSigned media URLs
max_spend_credits and the dry_run estimate (usage.credits)Workspace or user ids
The model id, or the fact that none was namedAnything pasted from private chats

The request

The body below is the shape from Microsoft's Learn page, with a JSON state and one noul question. criteria is optional but the page recommends defining the true and false conditions for borderline questions.

{
  "model": "<your-deployment-name>",
  "state": {
    "user_request": "a 8 second vertical teaser for the mug",
    "pending_call": {"tool": "generate_video", "duration": 8, "aspect_ratio": "9:16"},
    "dry_run_credits": 120
  },
  "questions": {
    "matches_request": {
      "type": "noul",
      "instructions": "Does the pending call match what the user asked for?",
      "criteria": {
        "true": "Length, ratio and subject agree with the request",
        "false": "Any of them differs from the request"
      }
    }
  }
}

What it does and does not protect

A mismatch caught here saves one dry run and a confusing job. It does not authorise anything. Under OAuth, a mcp:read session never sees the paid tools at all, and a write session still needs idempotency_key on every paid call. Keep those rules in place and treat the probability as advice. Choose the threshold from labelled examples of your own calls, as Microsoft advises, and route the middle band to a person instead of forcing a yes or no.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume