Response reference

What is returned, when does it appear, and how should you consume it? Start with Quick start and Read the result. All declarations are in TypeScript types.

CheckSection
Goals, prohibitions, changesturn, effective
Parameter ownership and false/nullStates
Ambiguity, candidates, unconfirmed inferenceIssues and inferences
Full configuration, request, resultScenario downloads
MCP outer repliesProtocol reference

Import public types and use indexed access for field types:

import type {IntentResult, TurnUnderstanding} from '@devcodex/intent-runtime';

type Response = IntentResult;

type TurnKind = TurnUnderstanding['kind'];

Default Native call and result

Set environment variables using model configuration. Save the complete file and run node native-response-en.mjs in your application. It selects orderId; suggestions, detailed evidence, diagnostics, and extension extraction are disabled by default.

import {Intent, IntentError} from '@devcodex/intent-runtime';
import {createApiExecutor} from '@devcodex/intent-runtime/adapters/api';

const apiKey = process.env.INTENT_API_KEY, model = process.env.INTENT_MODEL;
if (!apiKey || !model) throw new Error('Set INTENT_API_KEY and INTENT_MODEL in your environment.');
const intent = new Intent({
  language: 'en',
  executor: createApiExecutor({provider: 'openai', apiKey, model}),
  schema: {type: 'object', properties: {orderId: {type: 'string', pattern: '^[0-9]+$'}}},
});
try {
  const result = await intent.parse({input: 'Look up order 000123. Do not cancel the order.', fields: ['orderId']});
  console.log(JSON.stringify(result, null, 2));
} catch (error) {
  if (!(error instanceof IntentError)) throw error;
  console.error(JSON.stringify(error.toJSON()));
  process.exitCode = 1;
} finally {await intent.dispose();}

This table is a reading summary of selected fields. Full responses do not omit required objects or arrays.

MeaningLocationExample
Current requestturn.kindrequest
Goaleffective.intents[0].goalLook up order 000123
Prohibitioneffective.intents[0].constraintsprohibition: do not cancel the order
Parameter and ownershipeffective.intents[0].inputs.orderIdString "000123"
Current field checkfieldResults[]present, linked to the owning intent ID
Clarification issuesissues[]

This fixed candidate passed through the actual core and schema-dsl Validator. Opaque IDs are consistently renamed for readability. Actual model wording and IDs vary. No order query or cancellation is executed.

Native configuration and request · Complete Native result

Expand the complete default Native result
{
  "schemaVersion": "2.0-draft.6",
  "input": "Look up order 000123. Do not cancel the order.",
  "status": "complete",
  "turn": {
    "kind": "request",
    "normalizedInput": "Look up order 000123. Do not cancel the order.",
    "intentIds": [
      "intent-2"
    ],
    "changes": [
      {
        "operation": "add",
        "target": {
          "kind": "intent",
          "id": "intent-2"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      },
      {
        "operation": "add",
        "target": {
          "kind": "constraint",
          "id": "constraint-2"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      }
    ],
    "facts": {}
  },
  "effective": {
    "schemaVersion": "2.0-draft.6",
    "coverage": "complete",
    "scope": "current_request",
    "intents": [
      {
        "id": "intent-2",
        "domain": null,
        "action": "Look up",
        "target": "order 000123",
        "goal": "Look up order 000123",
        "understanding": "clear",
        "constraints": [
          {
            "id": "constraint-2",
            "kind": "prohibition",
            "text": "Do not cancel the order",
            "scope": {
              "type": "intent",
              "intentId": "intent-2"
            }
          }
        ],
        "inputs": {
          "orderId": "000123"
        },
        "references": [],
        "children": [],
        "extensions": {}
      }
    ],
    "constraints": [],
    "relations": [],
    "unresolved": []
  },
  "fieldResults": [
    {
      "container": "inputs",
      "intentId": "intent-2",
      "field": "orderId",
      "path": "/orderId",
      "status": "present",
      "trigger": "selection",
      "sourceRefs": [
        {
          "root": "input",
          "pointer": ""
        }
      ]
    }
  ],
  "issues": [],
  "inferences": []
}

Root fields

Required fields always occur in a normal IntentResult, using [] or {} when empty. Optional fields may be omitted; that does not mean null. Nullable locations such as domain/action/target and intentId are listed explicitly. Technical failures use exceptions/error envelopes rather than incomplete success objects.

PathTypePresenceMeaning
schemaVersion'2.0-draft.6'requiredResult format version, not npm version or request sequence
inputstringrequiredOriginal input; normalizedInput does not replace it
status'complete' or 'partial'requiredUnderstanding completeness, not field validity, authorization, or execution
turnTurnUnderstandingrequiredCurrent semantics, associations, changes, facts
effectiveEffectiveIntentSnapshotrequiredUnique effective goal tree and constraints from relevant material
fieldResultsFieldResult[]requiredSelected-field and old-value invalidation reports; may be empty with fields=[]
issuesIntentIssue[]requiredSemantic, field, and context issues; [] when none
inferencesIntentInference[]requiredUnconfirmed inferences, not user facts; [] when none
suggestionsIntentSuggestion[]suggestions enabled[] when none; omitted when disabled
evidenceSourceEvidence[]evidence enabledDetailed sources, [] when none; disabling retains necessary sources
diagnosticsIntentDiagnosticsdiagnostics enabledDiagnostic object; omitted when disabled

turn and changes

PathTypePresenceMeaning
turn.kindTurnUnderstanding['kind']requiredrequest/amendment/confirmation/rejection/withdrawal/answer/statement/mixed/unclear
turn.normalizedInputstringrequiredFaithful restatement without invented business steps or facts
turn.intentIdsstring[]requiredAssociated current effective intents; withdrawn targets are absent
turn.changesIntentChange[]requiredAssociations/changes caused by current input, not execution commands
turn.factsJsonObjectrequiredSelected facts without an operation intent; no automatic unselected extraction
turn.changes[].operationadd/modify/withdraw/confirm/rejectrequiredRead together with effect
turn.changes[].effectapplied/conditional/unresolvedrequiredReflected in the interpretation, conditional, or not yet located
turn.changes[].targetChangeTargetrequiredChanged object; see the union below
turn.changes[].target.kindintent/constraint/relation/unresolvedrequiredObject category; IDs cannot be mixed across kinds
turn.changes[].target.idstringrequired unless unresolvedCurrent object or explicitly withdrawn old object found only in prior material
turn.changes[].target.descriptionstringrequired when unresolvedDescription of an unlocated target without an invented ID
turn.changes[].descriptionstringrequiredExplanation of the current change
turn.changes[].sourceRefsSourceRef[]requiredSources from this turn's input
turn.changes[].conditionIdstringrequired for conditional; optional for unresolvedCurrent constraint ID; forbidden for applied
turn.changes[].deltasIntentDelta[]optional only for appliedActual local differences on known objects; forbidden for other effects
turn.changes[].deltas[].pathstringrequired for a deltaJSON Pointer relative to the changed object, not the whole Result
turn.changes[].deltas[].operationset/removerequired for a deltaInterpretation update/removal, not a database operation
turn.changes[].deltas[].beforeJsonValueoptionalReliable old value when known; omission does not mean null
turn.changes[].deltas[].afterJsonValuerequired for set; forbidden for removenull is a valid set value, distinct from removal

applied means interpretation changed. conditional retains the condition and target without premature withdrawal. A withdrawn target may be absent from new effective; do not discard the valid withdrawal. changes does not promise every internal difference such as context relocation and is not a generic business-state patch.

Effective understanding

PathTypePresenceMeaning
effective.schemaVersion'2.0-draft.6'requiredFormat version for the next baseline
effective.coveragecomplete/partial/unavailablerequiredCoverage of relevant history/material, distinct from root status
effective.scopecurrent_request/provided_materialsrequiredCurrent request only, or supplied relevant historical material
effective.intentsStructuredIntent[]requiredTop-level intents; full intents live only in this tree
effective.constraintsIntentConstraint[]requiredGlobal constraints; per-node constraints alone are insufficient
effective.relationsIntentRelation[]requiredExplicit ordering/dependencies; hierarchy uses children only
effective.unresolvedstring[]requiredText summaries of unresolved questions, not issue IDs

I means effective.intents[] or recursive I.children[]. C means effective.constraints[] or I.constraints[]. These are documentation path templates, not extra response fields.

PathTypePresenceMeaning
I.idstringrequiredGoal identity retained with explicit prior material and continuity; not a permanent cross-system business ID
I.domainstring or nullrequiredDomain; null when undetermined, without invention
I.actionstring or nullrequiredRequested action; configured business identifiers are not translated
I.targetstring or nullrequiredAction object; nullable while unresolved
I.goalstringrequiredNatural-language user goal, not an implementation plan
I.understandingclear/ambiguous/incomplete/conflictedrequiredNode understanding, distinct from field validity
I.constraintsIntentConstraint[]requiredConstraints within explicit scope; account for parents and globals
I.inputsJsonObjectrequiredSelected business parameters; {} without new values; use fieldResults for usability
I.optionalbooleanoptionalUser-expressed optionality, not arbitrary runtime permission to omit
I.expectedOutputstring[]optionalExplicit deliverables/success criteria, not duplicated requirements
I.referencesIntentReference[]requiredObject/material references used by this intent
I.childrenStructuredIntent[]requiredUnique parent-child containment; [] without children
I.extensionsJsonObjectrequiredSemantic labels; {} by default; cannot bypass fields for business parameters
C.idstringrequiredConstraint identity referenced by changes/conditions
C.kindrequirement/prohibition/precondition/preferencerequiredPositive requirement, prohibition, precondition, or preference
C.textstringrequiredOriginal constraint meaning, such as requiring email verification
C.scopeConstraintScoperequiredApplicability without duplicated authoritative constraints
C.scope.typeglobal/intent/phase/targetrequiredGlobal tree, intent, explicit phase, or referenced object
C.scope.intentIdstringrequired for intent/phase/targetOwning effective intent; absent for global
C.scope.referenceIdstringrequired for targetReference ID within the owning intent's references
C.expressionStructuredExpressionoptionalSupported structured logic; omission does not make a condition true

Requirements, constraints, and deliverables

“Sign-in requires an email code” is requirement; “do not modify the database” is prohibition; “enable only after approval” is precondition; “prefer existing styles” is preference. “Deliver Chinese user instructions” belongs to expectedOutput. There is no separate requirements array.

Download the parent/child example, containing all four kinds, a goal tree, explicit parallel relation, and deliverable.

Expand the complete parent/child result
{
  "schemaVersion": "2.0-draft.6",
  "input": "Implement the user module with sign-in and registration that can be developed in parallel. Sign-in requires an email verification code and must be enabled only after approval; prefer the existing styles. Do not modify the database anywhere in the module. Deliver Chinese user instructions.",
  "status": "complete",
  "turn": {
    "kind": "request",
    "normalizedInput": "Implement the user module with sign-in and registration that can be developed in parallel. Sign-in requires an email verification code and must be enabled only after approval; prefer the existing styles. Do not modify the database anywhere in the module. Deliver Chinese user instructions.",
    "intentIds": [
      "intent-5",
      "intent-6",
      "intent-7"
    ],
    "changes": [
      {
        "operation": "add",
        "target": {
          "kind": "intent",
          "id": "intent-5"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      },
      {
        "operation": "add",
        "target": {
          "kind": "intent",
          "id": "intent-6"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      },
      {
        "operation": "add",
        "target": {
          "kind": "intent",
          "id": "intent-7"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      },
      {
        "operation": "add",
        "target": {
          "kind": "constraint",
          "id": "constraint-4"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      },
      {
        "operation": "add",
        "target": {
          "kind": "constraint",
          "id": "constraint-5"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      },
      {
        "operation": "add",
        "target": {
          "kind": "constraint",
          "id": "constraint-6"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      },
      {
        "operation": "add",
        "target": {
          "kind": "constraint",
          "id": "constraint-7"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      },
      {
        "operation": "add",
        "target": {
          "kind": "relation",
          "id": "relation-1"
        },
        "description": "Add the explicit request from this turn",
        "sourceRefs": [
          {
            "root": "input",
            "pointer": ""
          }
        ],
        "effect": "applied"
      }
    ],
    "facts": {}
  },
  "effective": {
    "schemaVersion": "2.0-draft.6",
    "coverage": "complete",
    "scope": "current_request",
    "intents": [
      {
        "id": "intent-5",
        "domain": null,
        "action": "Implement",
        "target": "the user module",
        "goal": "Implement the user module",
        "understanding": "clear",
        "constraints": [
          {
            "id": "constraint-4",
            "kind": "prohibition",
            "text": "Do not modify the database",
            "scope": {
              "type": "intent",
              "intentId": "intent-5"
            }
          }
        ],
        "inputs": {},
        "references": [],
        "children": [
          {
            "id": "intent-6",
            "domain": null,
            "action": "Implement",
            "target": "sign-in",
            "goal": "Implement sign-in",
            "understanding": "clear",
            "constraints": [
              {
                "id": "constraint-5",
                "kind": "requirement",
                "text": "Sign-in requires an email verification code",
                "scope": {
                  "type": "intent",
                  "intentId": "intent-6"
                }
              },
              {
                "id": "constraint-6",
                "kind": "precondition",
                "text": "Enable sign-in only after approval",
                "scope": {
                  "type": "intent",
                  "intentId": "intent-6"
                }
              },
              {
                "id": "constraint-7",
                "kind": "preference",
                "text": "Prefer the existing styles",
                "scope": {
                  "type": "intent",
                  "intentId": "intent-6"
                }
              }
            ],
            "inputs": {},
            "references": [],
            "children": [],
            "extensions": {}
          },
          {
            "id": "intent-7",
            "domain": null,
            "action": "Implement",
            "target": "registration",
            "goal": "Implement registration",
            "understanding": "clear",
            "constraints": [],
            "inputs": {},
            "references": [],
            "children": [],
            "extensions": {}
          }
        ],
        "extensions": {},
        "expectedOutput": [
          "Chinese user instructions"
        ]
      }
    ],
    "constraints": [],
    "relations": [
      {
        "id": "relation-1",
        "fromId": "intent-6",
        "toId": "intent-7",
        "kind": "parallel"
      }
    ],
    "unresolved": []
  },
  "fieldResults": [],
  "issues": [],
  "inferences": []
}

Expressions

E means C.expression or recursive child expressions. O means a comparison's left/right operand.

PathTypePresenceMeaning
E.typecomparison/all/any/notrequired for an expressionComparison, conjunction, disjunction, negation
E.leftExpressionOperandrequired for comparisonLeft operand; no implicit business lookup
E.operatoreq/neq/gt/gte/lt/lterequired for comparisonExplicit comparison relation
E.rightExpressionOperandrequired for comparisonRight operand
E.itemsStructuredExpression[]required for all/anyNonempty expressions preserving AND/OR grouping
E.itemStructuredExpressionrequired for notOne negated expression
O.typeliteral/input/sourcerequired for an operandConstant, intent parameter, or supplied material
O.valueJsonValuerequired for literalJSON literal, including null
O.intentIdstringrequired for inputEffective intent owning the parameter
O.pathstringrequired for inputJSON Pointer relative to that intent's inputs
O.refSourceRefrequired for sourceExplicit location in supplied material

References and relations

R means I.references[].

PathTypePresenceMeaning
R.idstringrequiredReference identity inside its intent, used by target scope
R.kindintent/entity/sourcerequiredIntent, business entity, or source reference
R.refstring or nullrequiredKnown referenced object; null if unresolved, no invented entity ID
R.resolvedbooleanrequiredResolution, not authorization or executability
R.descriptionstringoptionalHuman-readable reference explanation
R.sourceRefsSourceRef[]optionalSources for the object location/reference
effective.relations[].idstringrequiredRelation identity usable by changes
effective.relations[].fromIdstringrequiredSource effective intent ID
effective.relations[].toIdstringrequiredTarget effective intent ID
effective.relations[].kindbefore/depends_on/parallel/exclusive/conditionalrequiredbefore: from precedes to; depends_on: from depends on to; independence does not imply parallelism
effective.relations[].conditionstringrequired for conditionalExplicit condition text; absent from other relation kinds

Fields and states

PathTypePresenceMeaning
fieldResults[].containerinputs/facts/extensionsrequiredContainer holding the authoritative value
fieldResults[].intentIdstring or nullrequiredOwning intent for inputs/extensions; null for facts
fieldResults[].fieldstringrequiredSelected or invalidated top-level field
fieldResults[].pathstringrequiredContainer-relative JSON Pointer preserving nested locations/original array indices
fieldResults[].triggerselection/invalidationrequiredCurrent selection or inherited-value invalidation
fieldResults[].statussee belowrequiredCurrent check for this binding
fieldResults[].explanationstringprovided unless presentWhy missing, invalid, inapplicable, or otherwise unresolved
fieldResults[].rawTextstringoptionalRetained original field text, not a validated replacement
fieldResults[].sourceRefsSourceRef[]optionalSources for the field material

States and consumption

fieldResults.statusValue in authoritative container?Meaning
presentYes, non-nullApplicable rules checked this turn; 0, false, and empty strings may be valid
explicit_nullYes, exactly nullUser explicitly supplied null and Schema permits it
not_providedNoAbsent; do not fill Schema defaults
unknownNoValue, applicability, or validity is not established
not_applicableNoField does not apply to this intent
invalidNoKnown candidate violates a rule
invalidatedNoA change invalidated an old value with no valid replacement
removedNoUser withdrew the parameter requirement; not a database deletion

Locate values with container + intentId + path. Do not merge multiple orders into the first goal. Unselected, unchanged inherited values may remain, but an absent current field report does not prove revalidation. fields=[] does not clear every old parameter or disable intent recognition.

Issues, candidates, and inferences

Q means issues[].

PathTypePresenceMeaning
Q.idstringrequiredIssue identity within this result, not a persistent business task ID
Q.codestringrequiredSemantic/field issue code; see Errors
Q.categoryambiguity/missing/conflict/data/contextrequiredIssue category, distinct from exception stage
Q.messagestringrequiredCaller-facing explanation
Q.containerinputs/facts/extensionsoptionalField issue's owning container
Q.intentIdstringoptionalRelated effective intent ID
Q.fieldstringoptionalRelated top-level field
Q.pathstringoptionalLocation relative to the field's container
Q.sourceRefsSourceRef[]optionalSupporting material for the issue
Q.candidatesIntentCandidate[]optionalUnconfirmed, material-supported candidates; never automatically adopted
Q.candidates[].idstringrequired for a candidateReferenced by question.optionIds in the same group
Q.candidates[].descriptionstringrequired for a candidateCandidate content
Q.candidates[].intentIdstringoptionalKnown related intent
Q.candidates[].sourceRefsSourceRef[]required for a candidateSupplied material supporting the candidate
Q.questionsquestion arrayoptionalQuestions the caller can ask
Q.questions[].questionstringrequired for a questionWhat to ask
Q.questions[].optionIdsstring[]optionalSame-group candidate IDs, not permanent array-position identities
inferences[].targetstringrequiredJSON Pointer into the final Result
inferences[].candidateJsonValueoptionalUnconfirmed value, not automatically a user fact
inferences[].explanationstringrequiredReason for inference or uncertainty
inferences[].sourceRefsSourceRef[]requiredExisting supplied material supporting the inference

Sources, options, and diagnostics

S means any SourceRef.

PathTypePresenceMeaning
S.rootinput/context/baseline/schema/extensionSchema/semantics/referenceTimerequiredRoot of supplied material, not an external file/URL
S.pointerstringrequiredRoot-relative JSON Pointer; input usually uses the empty string
S.quotestringoptionalVerbatim substring from the material, not a newly generated quotation
suggestions[].kindclarification/semantic_improvement/conflict_warningrequired for a suggestionIndependent suggestion without adding a formal goal
suggestions[].textstringrequired for a suggestionSuggestion text
suggestions[].relatesTostring[]optionalRelated object IDs, not execution authorization
evidence[].targetstringrequired for evidenceJSON Pointer relative to the entire final Result
evidence[].sourceRefsSourceRef[]required for evidenceMaterial sources for the corresponding structure/field
diagnostics.durationMsnumberoptionalRecognition waiting/processing duration, not a performance guarantee
diagnostics.modelCallCountnumberoptionalServer-side executor calls; host=0 excludes client model calls

JSON Pointer: the empty string names the root; /meta/ names an empty property; ~0 escapes a tilde and 1 a slash. /a2b is invalid; orders/1/amount lacks the required leading slash. Array pointers retain original indices. On the next turn, sources must be relocated into current supplied material rather than absent old objects.

OptionDefaultEnabledDisabled
suggestionsfalseArray, [] when noneOmitted
evidencefalseArray, [] when noneDetailed evidence omitted; necessary issues/inferences sources remain
diagnosticsfalseDiagnostic objectOmitted
extensionsfalseExtract extensionSchema labelsNo new extraction; I.extensions remains required and old-value invalidation still applies

defaultOutput and request output merge per key; explicit false overrides true. output:{} does not clear defaults. Enabling extensions without extensionSchema throws SCHEMA_NOT_CONFIGURED. See Configuration.

Complete scenarios and multi-turn material

Every scenario includes full config, request, and result; multi-turn examples include actual baseline and relevant context. Configurations omit model credentials; supply an executor to run them. These are fixed structural examples, not a promise of verbatim model output.

Download all scenarios

ScenarioComplete input and result
Recognize goals and constraints without a business SchemaDownload JSON
Preserve the order ID as a stringDownload JSON
Do not withdraw before a condition is establishedDownload JSON
Keep each order ID with its owning goalDownload JSON
Parent and child goals with four constraint kindsDownload JSON
Withdraw a child goal and change the deliverable languageDownload JSON
VIP discount: Set VIP=true and discount=15 for order 000123Download JSON
VIP discount: Change this order to non-VIP; keep everything elseDownload JSON
VIP discount: Change the discount to 5Download JSON
Withdraw a field requirementDownload JSON
A fact without an operationDownload JSON
Supply the previous fact explicitly for a lookupDownload JSON
Clarify an unresolved referenceDownload JSON
Keep prohibitions when answering a clarificationDownload JSON
Multiple candidates from caller-supplied materialDownload JSON
The second option requires the corresponding materialDownload JSON
Keep an inference separate from confirmed factsDownload JSON
Complete understanding can still contain field issuesDownload JSON
Extension labels and output optionsDownload JSON

The scenarios cover: conditional withdrawal without premature removal; order ownership; all four constraint kinds and hierarchy; withdrawn IDs retained only in baseline; VIP maximum 20 versus non-VIP maximum 10; field invalidation and correction; withdrawn parameter requirements; facts without invented actions; explicitly supplied facts; unresolved and answered references; material-backed candidate choices; inference separated from confirmed target; complete intent with invalid fields; labels and output switches.

Native, MCP, and host wrappers

  • Native parse returns IntentResult on success and throws IntentError on technical failure.
  • Executor MCP intent_parse puts the same IntentResult into structuredContent and JSON text content, with isError=false.
  • Host prepare returns HostTask. The client generates candidateText; accept returns the final IntentResult. cancel returns handoff status. A candidate is not a final response.
  • MCP technical failures have isError=true with text {error: SerializedIntentError}, without structuredContent or partialResult.
  • SDK envelope fields depend on negotiated protocol; they are not added to Native IntentResult.

Executor request · Complete executor reply

For these host examples, config is standalone MCP configuration and request is prepare input. They use the same default output policy as their corresponding structural scenarios; no duration is a latency guarantee.

Host order configuration/request · Host order result

Host clarification configuration/request · Host clarification result

INTENT_RESULT_SCHEMA validates response shape, not natural-language correctness. The caller decides business actions; see Read the result and Multi-turn.