CAIN-42 CAIN Studio

API reference · schema

DecisionRequest

8 fields · used by 1 operations

Last reviewed 2026-10-02

Fields

FieldTypeMeaning
servicestring or nullcatalog slug this call targets
pathstring or nullupstream path this call targets
payloadobjectthe request body the agent intends to send
planarray of objectordered [{tool, args}] plan for ActionProof
agent_idstring or nullmax length 255
provenanceobject or nullwhere each payload argument came from, keyed by dotted path: user | system | tool:<name> | memory:<id> | web:<url> | file:<ref> | agent:<id> | untrusted. An untrusted value in a recipient, URL, predicate, role, amount, account, command or SQL argument is denied; an unreadable label is denied.
chain_idstring or nullyour run id: every decision sharing it forms one trace
pattern ^[A-Za-z0-9._:-]{1,128}$
recordbooleanset false to evaluate without writing an evidence record
default true

Smallest valid example

{
  "record": true
}

Used by 1 operation

POST/fabric/decisionsAsk the control plane to decide on a proposed action

JSON Schema

Show the raw definition
{
  "properties": {
    "service": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Service",
      "description": "catalog slug this call targets"
    },
    "path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Path",
      "description": "upstream path this call targets"
    },
    "payload": {
      "additionalProperties": true,
      "type": "object",
      "title": "Payload",
      "description": "the request body the agent intends to send"
    },
    "plan": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "title": "Plan",
      "description": "ordered [{tool, args}] plan for ActionProof"
    },
    "agent_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 255
        },
        {
          "type": "null"
        }
      ],
      "title": "Agent Id"
    },
    "provenance": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provenance",
      "description": "where each payload argument came from, keyed by dotted path: user | system | tool:<name> | memory:<id> | web:<url> | file:<ref> | agent:<id> | untrusted. An untrusted value in a recipient, URL, predicate, role, amount, account, command or SQL argument is denied; an unreadable label is denied."
    },
    "chain_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{1,128}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Chain Id",
      "description": "your run id: every decision sharing it forms one trace"
    },
    "record": {
      "type": "boolean",
      "title": "Record",
      "description": "set false to evaluate without writing an evidence record",
      "default": true
    }
  },
  "type": "object",
  "title": "DecisionRequest"
}

Try CAIN-42 on your own agents

Create a free account and every new account starts with a 7-day trial of the full platform. Or try the sandbox first, with no account at all.

Create a free account →  ·  Try the sandbox  ·  See the whole ecosystem