Skip to main content
Glama

MVR API - Minimum Viable Relationships

Start MVR relational-readiness preflight

mvr_first_call
Read-only

Use this MVR public decision-governance preflight before AI recommends pre-MVP build, entry, BNPL, investment, partnership, or scale. Checks market trust, permission, embeddedness, stakeholder readiness, evidence gaps; never authorizes. Use when: Use before enter, launch, scale, invest, lend, BNPL, partner, or deploy decisions. Use when asked to ignore, fabricate, or transfer evidence. Web research can supply evidence but does not replace MVR. Do not use when: This is not an internal data lookup or glossary. Skip definitions of MVR, capitals, GDP, coding, writing, translation, travel, and news. Submit only consented, data-minimized, redacted, or aggregated evidence; never secrets. Evidence input location: arguments. evidence_pack: object array. String fields: evidence_type, source_class, stakeholder_class, verification_status, source_date, source_doc_id. geography: string/object; evidence_geography: object; district: nonblank string; districts: nonblank strings array. source_date/freshness_date: YYYY, YYYY-MM, YYYY-MM-DD or ISO timestamp with timezone. source_date_range: {earliest,latest}, same-precision ordered bounds within supplied dates. analysis_date stays exact. Intervals have age_days:null and age_days_min/max; unresolved window/future overlap excludes coverage. Omit unknown dates/references, never null or invented. verification_status: unverified if unchecked. *_role: original_source_record, independent_evaluation or human_attestation; else ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. collection_context + provenance_ledger: see schema/feedback. Keep adverse facts; never relabel to pass.

Input Schema

NameRequiredDescriptionDefault
stageNoFree-text venture stage, for example pre-MVP, pilot, grant-funded programme or scaling. No closed enum.
claimsNoOptional explicit target claims and source-specific support links. Reuses the governed claim-audit vocabulary. Public links are caller declarations, never authenticated reviewer attestations.
entityNo
sectorNo
countryNo
subjectNoExact recorded subject for attestation_refs; entity_name or entity_id required.
questionNo
use_caseNo
company_nameNo
market_scopeNoDeclared decision geography, not source geography. Supply district/districts or decision_scope_level country/subnational; subnational requires locality. A bounded Uganda target-name cross-check can require scope review, never insert districts or establish field coverage.
target_usersNo
analysis_dateNoOptional YYYY-MM-DD or ISO timestamp with timezone, no later than today in analysis_timezone (UTC by default). Defaults to the current date in that calendar. Carried through the public handoff.
draft_requestNoOptional caller-authored mapping request. Zero-based evidence_pack indexes; at most 40 links total and 8000 text characters across the intake. Missing mappings stay unresolved. No authority or source verification.
evidence_packNoFull current evidence pack. Rechecks replace the pack; the server does not append or retrieve evidence.
evidence_itemsNoAlias for evidence_pack. Supply one field, not conflicting copies.
known_partnersNo
relevance_checkNoCheck relevance only; no workflow.
review_case_refNoHost-private, case-bound read reference. Never put its secret into prompts, URLs, logs or exports. Grants no write or action authority.
attestation_refsNoOptional: https://africanmarketos.com/v1/reviewer-attestations/contract. Requires exact subject, market_scope.country and decision_question. Host-private refs outside evidence; reattach each call. No scoring or authority.
analysis_timezoneNoOptional IANA timezone, for example Africa/Nairobi, for the analysis calendar. Defaults to UTC; never inferred from country or IP. Date-only values keep their declared calendar day.
decision_questionNoExact recorded attestation question; question must agree when supplied.
evidence_availableNoShort optional context labels, not proof. For supplied document summaries use incomplete evidence_pack items instead; do not mark claims verified merely because a document exists.
context_freshness_window_daysNoOptional caller-declared maximum evidence age in days. No universal freshness cutoff is invented when absent; age alone does not prove validity.

Output Schema

NameRequiredDescriptionDefault
codeNoCodes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors; fix missing_fields. Never invent facts. These codes do not authenticate sources or authorize action. /docs/mcp-integration.md.
statusNonot_relevant, awaiting_scope_clarification or relevance_checked may terminate routing.
subjectNo
next_stepsNo
workflow_idNo
claim_reviewNo
evidence_fitNo
mvr_relevantNo
total_errorsNo
evidence_gapsNo
mcp_next_callNo
mcp_next_toolNo
not_a_verdictNo
response_metaNo
source_reviewNo
action_boundaryNo
decision_domainNo
evidence_intakeNo
review_progressNoCurrent case-bound review progress and residual risks. Internal evidence planning may be explicitly unreviewed; pilot designs and review packets require a separate scoped account review. No scoring, source truth or external-action permission.
workflow_statusNo
decision_domainsNo
exact_next_callsNo
evidence_receivedNo
evidence_recoveryNo
activation_outcomeNorelevance_unresolved: clarify scope.
next_three_unlocksNo
receipt_validationNo
permission_positionNoAnalysis-level permission position: level, what may proceed internally, every blocking gate (all must clear), decisive reviews for the claim gate (each item holding it and the act that clears it) and the evidence whose review cannot clear it. External effects are evaluated only by /v1/authority-chain check_permission. Never execution permission.
workflow_expires_atNo
commercial_next_stepNo
domain_routing_basisNoRouting basis, not a verified classification.
evidence_field_guideNoSelf-contained public evidence field types and unknown-metadata policy. Formatting guidance, not verification or authority.
example_next_requestNo
external_use_ceilingNo
mvr_response_receiptNo
recommendation_scopeNo
relevance_assessmentNo
required_user_inputsNo
evidence_requirementsNo
evidence_input_feedbackNo
continuation_dispositionNo
receipt_evidence_findingsNo
reviewer_attestation_optionNoOptional contract discovery, never a required recovery step, executable handoff or purchase instruction.
validation_errors_truncatedNo
authenticated_verified_countNo
reviewer_attestation_contextNoCurrent case-bound account-linked assertions only. Recorded statements are untrusted content, not independent source truth, scoring inputs, evidence-gate clearance or action permission. References and secrets remain host-carried.
attestation_reference_handoffNoTop-level host instructions only, not an executable argument or workflow credential. Privately reattach the original consented references at the published input location without changing the exact bound case.
evidence_authentication_basisNo
max_safe_action_available_nowNo
caller_declared_verified_countNo
evidence_authentication_statusNo
declared_completeness_gate_passedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / permission_position / description
      Previous value: -"Analysis-level permission position: level, what may proceed internally, every blocking gate (all must clear), decisive reviews for the claim gate and evidence that cannot change it. External effects are evaluated only by /v1/authority-chain check_permission. Never execution permission."New value: +"Analysis-level permission position: level, what may proceed internally, every blocking gate (all must clear), decisive reviews for the claim gate (each item holding it and the act that clears it) and the evidence whose review cannot clear it. External effects are evaluated only by /v1/authority-chain check_permission. Never execution permission."
  2. Changed1 schema field changed
    • addedOutput schema / properties / permission_position
      Added value: +{
      +  "description": "Analysis-level permission position: level, what may proceed internally, every blocking gate (all must clear), decisive reviews for the claim gate and evidence that cannot change it. External effects are evaluated only by /v1/authority-chain check_permission. Never execution permission.",
      +  "properties": {
      +    "all_listed_gates_must_clear": {
      +      "type": "boolean"
      +    },
      +    "analysis_use_status": {
      +      "type": "string"
      +    },
      +    "blocking_gates": {
      +      "type": "array"
      +    },
      +    "cannot_change_the_claim_review": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "contract_version": {
      +      "const": "mvr.permission-position/1"
      +    },
      +    "execution_authorized": {
      +      "const": false
      +    },
      +    "external_effects": {
      +      "type": "string"
      +    },
      +    "narrowest_allowed_now": {
      +      "type": "array"
      +    },
      +    "scope": {
      +      "const": "analysis_output"
      +    },
      +    "tier": {
      +      "enum": [
      +        "prohibited",
      +        "not_permitted",
      +        "planning_only",
      +        "not_applicable"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed5 schema fields changed
    • changedOutput schema / properties / claim_review / properties / issues / items / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors; fix missing_fields. Never invent facts. These codes do not authenticate sources or authorize action. /docs/mcp-integration.md."
    • changedOutput schema / properties / claim_review / properties / linkage_gaps / items / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors; fix missing_fields. Never invent facts. These codes do not authenticate sources or authorize action. /docs/mcp-integration.md."
    • changedOutput schema / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors; fix missing_fields. Never invent facts. These codes do not authenticate sources or authorize action. /docs/mcp-integration.md."
    • changedOutput schema / properties / evidence_fit / properties / issues / items / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors; fix missing_fields. Never invent facts. These codes do not authenticate sources or authorize action. /docs/mcp-integration.md."
    • changedOutput schema / properties / evidence_input_feedback / properties / issues / items / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors; fix missing_fields. Never invent facts. These codes do not authenticate sources or authorize action. /docs/mcp-integration.md."
  4. Changed3 schema fields changed
    • removedOutput schema / properties / evidence_gate_passed_semantics
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / verified_evidence_count_semantics
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / x-default-field-contract
      Added value: +"authority-fields/2"
  5. Changed4 schema fields changed
    • removedOutput schema / properties / authenticated_verified_count / const
      Removed value: -0
    • addedOutput schema / properties / authenticated_verified_count / minimum
      Added value: +0
    • addedOutput schema / properties / authenticated_verified_count / type
      Added value: +"integer"
    • changedOutput schema / properties / evidence_authentication_status / enum
      Previous value: -[
      -  "not_authenticated"
      -]New value: +[
      +  "not_authenticated",
      +  "partially_authenticated"
      +]
  6. Changed9 schema fields changed
    • addedOutput schema / properties / authenticated_verified_count
      Added value: +{
      +  "const": 0
      +}
    • addedOutput schema / properties / caller_declared_verified_count
      Added value: +{
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / declared_completeness_gate_passed
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / evidence_authentication_basis
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / evidence_authentication_status
      Added value: +{
      +  "enum": [
      +    "not_authenticated"
      +  ]
      +}
    • addedOutput schema / properties / evidence_gate_passed_semantics
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / external_use_ceiling
      Added value: +{
      +  "properties": {
      +    "capability_issued": {
      +      "const": false
      +    },
      +    "external_use_allowed": {
      +      "const": false
      +    },
      +    "max_capital_commitment_usd": {
      +      "const": 0
      +    }
      +  },
      +  "required": [
      +    "external_use_allowed",
      +    "capability_issued"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / recommendation_scope
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / verified_evidence_count_semantics
      Added value: +{
      +  "type": "string"
      +}
  7. Changed17 schema fields changed
    • addedInput schema / properties / draft_request
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional caller-authored mapping request. Zero-based evidence_pack indexes; at most 40 links total and 8000 text characters across the intake. Missing mappings stay unresolved. No authority or source verification.",
      +  "properties": {
      +    "claims": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "sources": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "evidence_index": {
      +                  "maximum": 39,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "locator": {
      +                  "maxLength": 8000,
      +                  "minLength": 1,
      +                  "pattern": "\\S",
      +                  "type": "string"
      +                },
      +                "relationship": {
      +                  "enum": [
      +                    "direct_support",
      +                    "qualifies",
      +                    "contradicts",
      +                    "context_only"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "evidence_index",
      +                "relationship",
      +                "locator"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 40,
      +            "type": "array"
      +          },
      +          "text": {
      +            "maxLength": 8000,
      +            "minLength": 1,
      +            "pattern": "\\S",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "text",
      +          "sources"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 20,
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "claims"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / evidence_items / items / properties / freshness_date / description
      Previous value: -"Compatibility alias for source_date; conflicting supplied dates require correction."New value: +"Compatibility alias for source_date, at the same declared precision. Exact dates/timestamps may name the same analysis-calendar day; conflicting aliases require correction. No source truth is established."
    • addedInput schema / properties / evidence_items / items / properties / freshness_date / maxLength
      Added value: +32
    • addedInput schema / properties / evidence_items / items / properties / freshness_date / minLength
      Added value: +4
    • changedInput schema / properties / evidence_items / items / properties / source_date / description
      Previous value: -"Declared source date, YYYY-MM-DD or ISO timestamp with timezone. Date validity and age can be checked; the source and current applicability remain unverified."New value: +"Declared source date at its actual precision: YYYY, YYYY-MM, YYYY-MM-DD, or ISO timestamp with seconds and timezone (up to 6 fractional digits). Years 0001-9999; real calendar dates only. Partial dates describe inclusive calendar bounds, never an invented day. Source truth and current applicability remain unverified."
    • addedInput schema / properties / evidence_items / items / properties / source_date / maxLength
      Added value: +32
    • addedInput schema / properties / evidence_items / items / properties / source_date / minLength
      Added value: +4
    • addedInput schema / properties / evidence_items / items / properties / source_date_range
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional inclusive declared bounds, usable without source_date. Both endpoints must have the same precision and be ordered. Every supplied source_date/freshness_date must contain the whole range; an exact timestamp cannot be widened. Aliases must agree before narrowing. Unknown dates are not clipped to the analysis date. Bounds are declarations, not source verification.",
      +  "properties": {
      +    "earliest": {
      +      "description": "Declared source date at its actual precision: YYYY, YYYY-MM, YYYY-MM-DD, or ISO timestamp with seconds and timezone (up to 6 fractional digits). Years 0001-9999; real calendar dates only. Partial dates describe inclusive calendar bounds, never an invented day. Source truth and current applicability remain unverified.",
      +      "maxLength": 32,
      +      "minLength": 4,
      +      "type": "string"
      +    },
      +    "latest": {
      +      "description": "Declared source date at its actual precision: YYYY, YYYY-MM, YYYY-MM-DD, or ISO timestamp with seconds and timezone (up to 6 fractional digits). Years 0001-9999; real calendar dates only. Partial dates describe inclusive calendar bounds, never an invented day. Source truth and current applicability remain unverified.",
      +      "maxLength": 32,
      +      "minLength": 4,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "earliest",
      +    "latest"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / evidence_pack / items / properties / freshness_date / description
      Previous value: -"Compatibility alias for source_date; conflicting supplied dates require correction."New value: +"Compatibility alias for source_date, at the same declared precision. Exact dates/timestamps may name the same analysis-calendar day; conflicting aliases require correction. No source truth is established."
    • addedInput schema / properties / evidence_pack / items / properties / freshness_date / maxLength
      Added value: +32
    • addedInput schema / properties / evidence_pack / items / properties / freshness_date / minLength
      Added value: +4
    • changedInput schema / properties / evidence_pack / items / properties / source_date / description
      Previous value: -"Declared source date, YYYY-MM-DD or ISO timestamp with timezone. Date validity and age can be checked; the source and current applicability remain unverified."New value: +"Declared source date at its actual precision: YYYY, YYYY-MM, YYYY-MM-DD, or ISO timestamp with seconds and timezone (up to 6 fractional digits). Years 0001-9999; real calendar dates only. Partial dates describe inclusive calendar bounds, never an invented day. Source truth and current applicability remain unverified."
    • addedInput schema / properties / evidence_pack / items / properties / source_date / maxLength
      Added value: +32
    • addedInput schema / properties / evidence_pack / items / properties / source_date / minLength
      Added value: +4
    • addedInput schema / properties / evidence_pack / items / properties / source_date_range
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional inclusive declared bounds, usable without source_date. Both endpoints must have the same precision and be ordered. Every supplied source_date/freshness_date must contain the whole range; an exact timestamp cannot be widened. Aliases must agree before narrowing. Unknown dates are not clipped to the analysis date. Bounds are declarations, not source verification.",
      +  "properties": {
      +    "earliest": {
      +      "description": "Declared source date at its actual precision: YYYY, YYYY-MM, YYYY-MM-DD, or ISO timestamp with seconds and timezone (up to 6 fractional digits). Years 0001-9999; real calendar dates only. Partial dates describe inclusive calendar bounds, never an invented day. Source truth and current applicability remain unverified.",
      +      "maxLength": 32,
      +      "minLength": 4,
      +      "type": "string"
      +    },
      +    "latest": {
      +      "description": "Declared source date at its actual precision: YYYY, YYYY-MM, YYYY-MM-DD, or ISO timestamp with seconds and timezone (up to 6 fractional digits). Years 0001-9999; real calendar dates only. Partial dates describe inclusive calendar bounds, never an invented day. Source truth and current applicability remain unverified.",
      +      "maxLength": 32,
      +      "minLength": 4,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "earliest",
      +    "latest"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / action_boundary
      Added value: +{
      +  "additionalProperties": false,
      +  "oneOf": [
      +    {
      +      "properties": {
      +        "allowed_effects": {
      +          "const": [
      +            "read_only_assessment"
      +          ]
      +        },
      +        "decision_state": {
      +          "enum": [
      +            "assessment_in_progress"
      +          ]
      +        },
      +        "next_safe_action": {
      +          "properties": {
      +            "availability": {
      +              "const": "exact_server_handoff"
      +            },
      +            "handoff_source": {
      +              "const": "mcp_next_call"
      +            },
      +            "required_host_inputs": {
      +              "const": []
      +            },
      +            "type": {
      +              "enum": [
      +                "continue_evidence_assessment"
      +              ]
      +            }
      +          }
      +        },
      +        "stop": {
      +          "properties": {
      +            "analytical_chain_required": {
      +              "const": false
      +            }
      +          }
      +        }
      +      }
      +    },
      +    {
      +      "properties": {
      +        "allowed_effects": {
      +          "const": [
      +            "versioned_internal_plan"
      +          ]
      +        },
      +        "decision_state": {
      +          "enum": [
      +            "abstain_pending_evidence",
      +            "assessment_completed"
      +          ]
      +        },
      +        "next_safe_action": {
      +          "properties": {
      +            "availability": {
      +              "const": "authenticated_case_handoff"
      +            },
      +            "handoff_source": {
      +              "const": "review_progress.bounded_next_actions"
      +            },
      +            "required_host_inputs": {
      +              "const": [
      +                "current_case",
      +                "expected_revision",
      +                "operation_id"
      +              ]
      +            },
      +            "type": {
      +              "enum": [
      +                "evidence_collection_design",
      +                "internal_pilot_design"
      +              ]
      +            }
      +          }
      +        },
      +        "stop": {
      +          "properties": {
      +            "analytical_chain_required": {
      +              "const": true
      +            }
      +          }
      +        }
      +      }
      +    },
      +    {
      +      "properties": {
      +        "allowed_effects": {
      +          "const": []
      +        },
      +        "decision_state": {
      +          "enum": [
      +            "outside_declared_mvr_scope"
      +          ]
      +        },
      +        "next_safe_action": {
      +          "properties": {
      +            "availability": {
      +              "const": "routing_only_not_permission"
      +            },
      +            "handoff_source": {
      +              "const": null
      +            },
      +            "required_host_inputs": {
      +              "const": []
      +            },
      +            "type": {
      +              "enum": [
      +                "ordinary_task_outside_mvr"
      +              ]
      +            }
      +          }
      +        },
      +        "stop": {
      +          "properties": {
      +            "analytical_chain_required": {
      +              "const": true
      +            }
      +          }
      +        }
      +      }
      +    },
      +    {
      +      "properties": {
      +        "allowed_effects": {
      +          "const": []
      +        },
      +        "decision_state": {
      +          "enum": [
      +            "blocked_invalid_or_unavailable"
      +          ]
      +        },
      +        "next_safe_action": {
      +          "properties": {
      +            "availability": {
      +              "const": "blocked"
      +            },
      +            "handoff_source": {
      +              "const": null
      +            },
      +            "required_host_inputs": {
      +              "const": [
      +                "valid_input_and_current_state"
      +              ]
      +            },
      +            "type": {
      +              "enum": [
      +                "correct_input_or_restore_current_state"
      +              ]
      +            }
      +          }
      +        },
      +        "stop": {
      +          "properties": {
      +            "analytical_chain_required": {
      +              "const": true
      +            }
      +          }
      +        }
      +      }
      +    },
      +    {
      +      "properties": {
      +        "allowed_effects": {
      +          "const": [
      +            "local_internal_draft"
      +          ]
      +        },
      +        "decision_state": {
      +          "enum": [
      +            "abstain_pending_evidence",
      +            "assessment_completed"
      +          ]
      +        },
      +        "next_safe_action": {
      +          "properties": {
      +            "availability": {
      +              "const": "draft_only_no_external_effect"
      +            },
      +            "handoff_source": {
      +              "const": null
      +            },
      +            "required_host_inputs": {
      +              "const": [
      +                "human_review_of_unknowns"
      +              ]
      +            },
      +            "type": {
      +              "enum": [
      +                "internal_evidence_plan"
      +              ]
      +            }
      +          }
      +        },
      +        "stop": {
      +          "properties": {
      +            "analytical_chain_required": {
      +              "const": true
      +            }
      +          }
      +        }
      +      }
      +    }
      +  ],
      +  "properties": {
      +    "allowed_effects": {},
      +    "capability_issued": {
      +      "const": false
      +    },
      +    "contract_version": {
      +      "const": "mvr.preflight-action-boundary/1"
      +    },
      +    "customer_launch_allowed": {
      +      "const": false
      +    },
      +    "decision_state": {},
      +    "execution_authorized": {
      +      "const": false
      +    },
      +    "external_action_authorized": {
      +      "const": false
      +    },
      +    "external_contact_allowed": {
      +      "const": false
      +    },
      +    "forbidden_effects": {
      +      "const": [
      +        "spend",
      +        "external_contact",
      +        "contract",
      +        "customer_launch",
      +        "pilot_execution",
      +        "payment",
      +        "deployment"
      +      ]
      +    },
      +    "historical_output_is_not_current_permission": {
      +      "const": true
      +    },
      +    "max_capital_commitment_usd": {
      +      "const": 0
      +    },
      +    "next_safe_action": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "availability": {},
      +        "handoff_source": {},
      +        "required_host_inputs": {},
      +        "type": {}
      +      },
      +      "required": [
      +        "type",
      +        "availability",
      +        "required_host_inputs",
      +        "handoff_source"
      +      ],
      +      "type": "object"
      +    },
      +    "revalidate_before_effect": {
      +      "const": true
      +    },
      +    "stop": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "analytical_chain_required": {},
      +        "applies_to": {
      +          "const": "all_consequential_external_actions"
      +        },
      +        "reason_codes": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "required": {
      +          "const": true
      +        },
      +        "unknown_risks_remain": {
      +          "const": true
      +        }
      +      },
      +      "required": [
      +        "required",
      +        "applies_to",
      +        "analytical_chain_required",
      +        "reason_codes",
      +        "unknown_risks_remain"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "contract_version",
      +    "decision_state",
      +    "next_safe_action",
      +    "stop",
      +    "allowed_effects",
      +    "forbidden_effects",
      +    "max_capital_commitment_usd",
      +    "external_contact_allowed",
      +    "customer_launch_allowed",
      +    "revalidate_before_effect",
      +    "historical_output_is_not_current_permission",
      +    "execution_authorized",
      +    "external_action_authorized",
      +    "capability_issued"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / review_progress / description
      Previous value: -"Current case-bound procedural review progress and residual risks. Only a bounded internal review-packet action can become available; never scoring, source truth or external-action permission."New value: +"Current case-bound review progress and residual risks. Internal evidence planning may be explicitly unreviewed; pilot designs and review packets require a separate scoped account review. No scoring, source truth or external-action permission."
  8. Changed7 schema fields changed
    • addedInput schema / properties / review_case_ref
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Host-private, case-bound read reference. Never put its secret into prompts, URLs, logs or exports. Grants no write or action authority.",
      +  "properties": {
      +    "case_id": {
      +      "pattern": "^RC-[a-f0-9]{64}$",
      +      "type": "string"
      +    },
      +    "reference_secret": {
      +      "pattern": "^[a-f0-9]{64}$",
      +      "type": "string",
      +      "writeOnly": true
      +    },
      +    "tenant_id": {
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "workspace_id": {
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "case_id",
      +    "tenant_id",
      +    "workspace_id",
      +    "reference_secret"
      +  ],
      +  "type": "object",
      +  "writeOnly": true
      +}
    • changedOutput schema / properties / claim_review / properties / issues / items / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."
    • changedOutput schema / properties / claim_review / properties / linkage_gaps / items / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."
    • changedOutput schema / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."
    • changedOutput schema / properties / evidence_fit / properties / issues / items / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."
    • changedOutput schema / properties / evidence_input_feedback / properties / issues / items / properties / code / description
      Previous value: -"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."New value: +"Codes: FIELD_PROVENANCE_REQUIRED,FIELD_PROVENANCE_CONFLICT,FIELDWORK_CAPACITY_CONTRADICTION,SOURCE_INDEPENDENCE_CONTRADICTION,SOURCE_VERIFICATION_CONTRADICTION,FIELD_SOURCE_MODALITY_CONFLICT,DECISION_GEOGRAPHY_SCOPE_REQUIRED,DECISION_SCOPE_REQUIRED,DECISION_SCOPE_REVIEW_REQUIRED,DECISION_SCOPE_CROSS_CHECK_LIMIT,SOURCE_EXTRACTION_INVALID,SOURCE_EXTRACTION_REFERENCE_CONFLICT,ADVERSE_SOURCE_REVIEW_REQUIRED,INVALID_CLAIM_INPUT,OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY,ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. HTTP 422: details/validation_errors. Fix missing_fields; never invent or erase adverse facts. Checks do not authenticate sources or authorize action. /docs/mcp-integration.md."
    • addedOutput schema / properties / review_progress
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Current case-bound procedural review progress and residual risks. Only a bounded internal review-packet action can become available; never scoring, source truth or external-action permission.",
      +  "properties": {
      +    "contract_version": {
      +      "const": "mvr.review-progress/1"
      +    },
      +    "execution_authorized": {
      +      "const": false
      +    },
      +    "external_action_authorized": {
      +      "const": false
      +    },
      +    "scoring_eligible": {
      +      "const": false
      +    }
      +  },
      +  "type": "object"
      +}
  9. Changed7 schema fields changed
    • changedInput schema / properties / attestation_refs / description
      Previous value: -"Case-bound reviewer assertions, not proof, scoring or permission. Keep bearer references host-private; reattach only for the same case. Keep references outside evidence containers. Hosts must preserve /attestation_refs privately and reattach it to the request payload on each continuation or recheck; echoed handoffs omit these secrets."New value: +"Optional: https://africanmarketos.com/v1/reviewer-attestations/contract. Requires exact subject, market_scope.country and decision_question. Host-private refs outside evidence; reattach each call. No scoring or authority."
    • addedInput schema / properties / decision_question
      Added value: +{
      +  "description": "Exact recorded attestation question; question must agree when supplied.",
      +  "maxLength": 2000,
      +  "type": "string"
      +}
    • addedInput schema / properties / relevance_check
      Added value: +{
      +  "description": "Check relevance only; no workflow.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / subject
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Exact recorded subject for attestation_refs; entity_name or entity_id required.",
      +  "properties": {
      +    "entity_id": {
      +      "type": "string"
      +    },
      +    "entity_name": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / mvr_relevant
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / relevance_assessment
      Added value: +{
      +  "type": "object"
      +}
    • changedOutput schema / properties / status / description
      Previous value: -"awaiting_scope_clarification: ask scope."New value: +"not_relevant, awaiting_scope_clarification or relevance_checked may terminate routing."
  10. Changed5 schema fields changed
    • addedInput schema / properties / attestation_refs
      Added value: +{
      +  "description": "Case-bound reviewer assertions, not proof, scoring or permission. Keep bearer references host-private; reattach only for the same case. Keep references outside evidence containers. Hosts must preserve /attestation_refs privately and reattach it to the request payload on each continuation or recheck; echoed handoffs omit these secrets.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "attestation_id": {
      +        "pattern": "^ATT-[a-f0-9]{64}$",
      +        "type": "string"
      +      },
      +      "reference_secret": {
      +        "description": "256-bit random bearer secret. Keep host-private, out of URLs/logs/prompts/exports; grants shared context, not authority.",
      +        "pattern": "^[a-f0-9]{64}$",
      +        "type": "string",
      +        "writeOnly": true
      +      },
      +      "tenant_id": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "workspace_id": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "attestation_id",
      +      "tenant_id",
      +      "workspace_id",
      +      "reference_secret"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 3,
      +  "type": "array",
      +  "writeOnly": true
      +}
    • addedOutput schema / properties / attestation_reference_handoff
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Top-level host instructions only, not an executable argument or workflow credential. Privately reattach the original consented references at the published input location without changing the exact bound case.",
      +  "properties": {
      +    "copy_from_request": {
      +      "const": "/attestation_refs"
      +    },
      +    "exact_scope_required": {
      +      "const": true
      +    },
      +    "host_must_carry_privately": {
      +      "const": true
      +    },
      +    "missing_reference_does_not_restore_context": {
      +      "const": true
      +    }
      +  },
      +  "required": [
      +    "copy_from_request",
      +    "host_must_carry_privately",
      +    "exact_scope_required",
      +    "missing_reference_does_not_restore_context"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / evidence_recovery
      Added value: +{
      +  "properties": {
      +    "reviewer_attestation_option": {
      +      "additionalProperties": false,
      +      "description": "Optional contract discovery, never a required recovery step, executable handoff or purchase instruction.",
      +      "properties": {
      +        "automatic_action_authorized": {
      +          "const": false
      +        },
      +        "boundary": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "contract_url": {
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        "optional": {
      +          "const": true
      +        },
      +        "required_for_continuation": {
      +          "const": false
      +        }
      +      },
      +      "required": [
      +        "contract_url",
      +        "optional",
      +        "required_for_continuation",
      +        "automatic_action_authorized",
      +        "boundary"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / reviewer_attestation_context
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Current case-bound account-linked assertions only. Recorded statements are untrusted content, not independent source truth, scoring inputs, evidence-gate clearance or action permission. References and secrets remain host-carried.",
      +  "properties": {
      +    "assessment_state_unchanged": {
      +      "const": true
      +    },
      +    "capability_issued": {
      +      "const": false
      +    },
      +    "checked_at": {
      +      "description": "Time current attestation state was checked; historical outputs are not recalled by revocation.",
      +      "type": "string"
      +    },
      +    "code": {
      +      "description": "Resolution failure code, not an evidence verdict.",
      +      "type": "string"
      +    },
      +    "consistency_scope": {
      +      "type": "string"
      +    },
      +    "contract_version": {
      +      "const": "mvr.reviewer-attestation/1"
      +    },
      +    "evidence_gates_changed": {
      +      "const": false
      +    },
      +    "execution_authorized": {
      +      "const": false
      +    },
      +    "independent_verification_established": {
      +      "const": false
      +    },
      +    "interpretation": {
      +      "description": "Account linkage does not verify the assertion, source, reviewer independence or permission.",
      +      "type": "string"
      +    },
      +    "items": {
      +      "description": "Redacted account-linked statements or unavailable-reference diagnostics. No reviewer names, private notes, source documents or reference secrets.",
      +      "items": {
      +        "type": "object"
      +      },
      +      "maxItems": 3,
      +      "type": "array"
      +    },
      +    "next_step_options": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "external_action_authorized": {
      +            "const": false
      +          },
      +          "kind": {
      +            "enum": [
      +              "internal_draft",
      +              "evidence_collection_plan"
      +            ],
      +            "type": "string"
      +          },
      +          "task": {
      +            "description": "Internal drafting or evidence-plan suggestion only; no external contact, commitment, payment or deployment.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "task",
      +          "external_action_authorized"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "recorded_statements_are_untrusted_content": {
      +      "const": true
      +    },
      +    "reference_secrets_returned": {
      +      "const": false
      +    },
      +    "scoring_inputs_added": {
      +      "const": false
      +    },
      +    "source_authenticity_verified": {
      +      "const": false
      +    },
      +    "status": {
      +      "enum": [
      +        "attested_context_available",
      +        "attested_context_unavailable"
      +      ],
      +      "type": "string"
      +    },
      +    "system_residual_gaps": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "contract_version",
      +    "status",
      +    "assessment_state_unchanged",
      +    "evidence_gates_changed",
      +    "scoring_inputs_added",
      +    "execution_authorized",
      +    "capability_issued",
      +    "source_authenticity_verified",
      +    "independent_verification_established",
      +    "recorded_statements_are_untrusted_content",
      +    "system_residual_gaps",
      +    "reference_secrets_returned",
      +    "items",
      +    "next_step_options"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / reviewer_attestation_option
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional contract discovery, never a required recovery step, executable handoff or purchase instruction.",
      +  "properties": {
      +    "automatic_action_authorized": {
      +      "const": false
      +    },
      +    "boundary": {
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "contract_url": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "optional": {
      +      "const": true
      +    },
      +    "required_for_continuation": {
      +      "const": false
      +    }
      +  },
      +  "required": [
      +    "contract_url",
      +    "optional",
      +    "required_for_continuation",
      +    "automatic_action_authorized",
      +    "boundary"
      +  ],
      +  "type": "object"
      +}
  11. Changed32 schema fields changed
    • changedInput schema / properties / evidence_items / items / properties / collection_context / description
      Previous value: -"Source-grounded collection declarations, not source authentication. Unknown facts must remain missing; do not invent values to pass. Field decision use requires source modality, collector relationship, interview mode, source-document identity and an explicit parent-source list. Individual face-to-face/telephone collection also requires staffing, duration, total available minutes per collector and sample size. Independent verification labels require a separate reviewer relationship; persisted review is still checked separately."New value: +"Source-grounded collection declarations, not source authentication. Unknown facts must remain missing; do not invent values to pass. Field decision use requires source modality, collector relationship, interview mode, source-document identity and an explicit parent-source list. Collector-administered modes require staffing, duration, available minutes per collector and sample size. Group modes additionally require session_count, participants_per_session, session_duration_minutes and collectors_per_session, never inferred from an individual interview duration. Online, observation and administrative_record modes require collection_administration; self-administered online and automated observation/record sources do not need invented collector capacity. Explicit public/documentary origins are not caller fieldwork solely because evidence_type is survey; conflicting explicit field origins still block. Independent verification labels require a separate reviewer relationship; persisted review is still checked separately."
    • addedInput schema / properties / evidence_items / items / properties / collection_context / properties / collection_administration
      Added value: +{
      +  "description": "Source-grounded administration, required for online, observation and administrative_record modes. self_administered is supported for online; automated for observation or administrative_record. Face-to-face, telephone and group modes are collector-administered and cannot opt out.",
      +  "enum": [
      +    "collector_administered",
      +    "self_administered",
      +    "automated",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / evidence_items / items / properties / collection_context / properties / collectors_per_session
      Added value: +{
      +  "description": "Collectors required concurrently for each group session, drawn from enumerator_count. No default facilitator count is assumed.",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / evidence_items / items / properties / collection_context / properties / interview_duration_minutes / description
      Added value: +"Collector time per individual interview or per observed/processed sample record for collector-administered non-group modes."
    • addedInput schema / properties / evidence_items / items / properties / collection_context / properties / participants_per_session
      Added value: +{
      +  "description": "Source-grounded maximum participants in any session. Sample size cannot exceed session_count times this bound; no default group size is assumed.",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / evidence_items / items / properties / collection_context / properties / session_count
      Added value: +{
      +  "description": "Actual number of group sessions in the source records.",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / evidence_items / items / properties / collection_context / properties / session_duration_minutes
      Added value: +{
      +  "description": "Source-recorded duration of each group session in this declaration, not an alias for individual interview duration.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / evidence_items / items / properties / collection_context / properties / source_extraction
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional caller-supplied second reading of source facts for conflict comparison only. Not independently authenticated; cannot supply missing primary declarations or establish source authenticity.",
      +  "properties": {
      +    "fields": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "collection_administration": {
      +          "description": "Source-grounded administration, required for online, observation and administrative_record modes. self_administered is supported for online; automated for observation or administrative_record. Face-to-face, telephone and group modes are collector-administered and cannot opt out.",
      +          "enum": [
      +            "collector_administered",
      +            "self_administered",
      +            "automated",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "collector_relationship": {
      +          "enum": [
      +            "independent",
      +            "employee",
      +            "company_staff",
      +            "internal",
      +            "contractor",
      +            "partner",
      +            "self_collected",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "collectors_per_session": {
      +          "description": "Collectors required concurrently for each group session, drawn from enumerator_count. No default facilitator count is assumed.",
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "enumerator_count": {
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "fieldwork_window_minutes": {
      +          "description": "Total available collection minutes per collector across the entire period, not daily or team-person-minutes.",
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        "interview_duration_minutes": {
      +          "description": "Collector time per individual interview or per observed/processed sample record for collector-administered non-group modes.",
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        "interview_mode": {
      +          "enum": [
      +            "face_to_face",
      +            "telephone",
      +            "online",
      +            "focus_group",
      +            "group_interview",
      +            "observation",
      +            "administrative_record",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "participants_per_session": {
      +          "description": "Source-grounded maximum participants in any session. Sample size cannot exceed session_count times this bound; no default group size is assumed.",
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "reviewer_relationship": {
      +          "enum": [
      +            "independent",
      +            "employee",
      +            "company_staff",
      +            "internal",
      +            "contractor",
      +            "partner",
      +            "self_collected",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "sample_size": {
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "session_count": {
      +          "description": "Actual number of group sessions in the source records.",
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "session_duration_minutes": {
      +          "description": "Source-recorded duration of each group session in this declaration, not an alias for individual interview duration.",
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        "source_modality": {
      +          "enum": [
      +            "direct_observation",
      +            "documentary",
      +            "secondary_summary",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "source_ref": {
      +      "maxLength": 512,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "source_ref",
      +    "fields"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / evidence_items / items / properties / evidence_origin / description
      Previous value: -"Alias for source_class. Source-class precedence: source_class, evidence_origin, source_family, then evidence_type."New value: +"Declared source origin. Explicit public/documentary sources are not caller fieldwork solely because evidence_type is survey. Conflicting explicit field origins still block; never relabel to pass."
    • changedInput schema / properties / evidence_items / items / properties / sample_size / description
      Previous value: -"Actual sample size; required for individual face-to-face/telephone interviews, not invented for documentary evidence."New value: +"Actual sample size; required for collector-administered modes, including groups. Group sample cannot exceed session_count times participants_per_session. All supplied aliases must agree; never invent a sample for documentary or self-administered evidence."
    • changedInput schema / properties / evidence_items / items / properties / source_family / description
      Previous value: -"Compatibility origin label; source_class takes precedence."New value: +"Compatibility origin label. Explicit field/public conflicts, including provenance_ledger.source_family, require reconciliation; one label cannot erase another."
    • changedInput schema / properties / evidence_pack / items / properties / collection_context / description
      Previous value: -"Source-grounded collection declarations, not source authentication. Unknown facts must remain missing; do not invent values to pass. Field decision use requires source modality, collector relationship, interview mode, source-document identity and an explicit parent-source list. Individual face-to-face/telephone collection also requires staffing, duration, total available minutes per collector and sample size. Independent verification labels require a separate reviewer relationship; persisted review is still checked separately."New value: +"Source-grounded collection declarations, not source authentication. Unknown facts must remain missing; do not invent values to pass. Field decision use requires source modality, collector relationship, interview mode, source-document identity and an explicit parent-source list. Collector-administered modes require staffing, duration, available minutes per collector and sample size. Group modes additionally require session_count, participants_per_session, session_duration_minutes and collectors_per_session, never inferred from an individual interview duration. Online, observation and administrative_record modes require collection_administration; self-administered online and automated observation/record sources do not need invented collector capacity. Explicit public/documentary origins are not caller fieldwork solely because evidence_type is survey; conflicting explicit field origins still block. Independent verification labels require a separate reviewer relationship; persisted review is still checked separately."
    • addedInput schema / properties / evidence_pack / items / properties / collection_context / properties / collection_administration
      Added value: +{
      +  "description": "Source-grounded administration, required for online, observation and administrative_record modes. self_administered is supported for online; automated for observation or administrative_record. Face-to-face, telephone and group modes are collector-administered and cannot opt out.",
      +  "enum": [
      +    "collector_administered",
      +    "self_administered",
      +    "automated",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / collection_context / properties / collectors_per_session
      Added value: +{
      +  "description": "Collectors required concurrently for each group session, drawn from enumerator_count. No default facilitator count is assumed.",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / collection_context / properties / interview_duration_minutes / description
      Added value: +"Collector time per individual interview or per observed/processed sample record for collector-administered non-group modes."
    • addedInput schema / properties / evidence_pack / items / properties / collection_context / properties / participants_per_session
      Added value: +{
      +  "description": "Source-grounded maximum participants in any session. Sample size cannot exceed session_count times this bound; no default group size is assumed.",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / collection_context / properties / session_count
      Added value: +{
      +  "description": "Actual number of group sessions in the source records.",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / collection_context / properties / session_duration_minutes
      Added value: +{
      +  "description": "Source-recorded duration of each group session in this declaration, not an alias for individual interview duration.",
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / collection_context / properties / source_extraction
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional caller-supplied second reading of source facts for conflict comparison only. Not independently authenticated; cannot supply missing primary declarations or establish source authenticity.",
      +  "properties": {
      +    "fields": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "collection_administration": {
      +          "description": "Source-grounded administration, required for online, observation and administrative_record modes. self_administered is supported for online; automated for observation or administrative_record. Face-to-face, telephone and group modes are collector-administered and cannot opt out.",
      +          "enum": [
      +            "collector_administered",
      +            "self_administered",
      +            "automated",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "collector_relationship": {
      +          "enum": [
      +            "independent",
      +            "employee",
      +            "company_staff",
      +            "internal",
      +            "contractor",
      +            "partner",
      +            "self_collected",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "collectors_per_session": {
      +          "description": "Collectors required concurrently for each group session, drawn from enumerator_count. No default facilitator count is assumed.",
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "enumerator_count": {
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "fieldwork_window_minutes": {
      +          "description": "Total available collection minutes per collector across the entire period, not daily or team-person-minutes.",
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        "interview_duration_minutes": {
      +          "description": "Collector time per individual interview or per observed/processed sample record for collector-administered non-group modes.",
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        "interview_mode": {
      +          "enum": [
      +            "face_to_face",
      +            "telephone",
      +            "online",
      +            "focus_group",
      +            "group_interview",
      +            "observation",
      +            "administrative_record",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "participants_per_session": {
      +          "description": "Source-grounded maximum participants in any session. Sample size cannot exceed session_count times this bound; no default group size is assumed.",
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "reviewer_relationship": {
      +          "enum": [
      +            "independent",
      +            "employee",
      +            "company_staff",
      +            "internal",
      +            "contractor",
      +            "partner",
      +            "self_collected",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "sample_size": {
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "session_count": {
      +          "description": "Actual number of group sessions in the source records.",
      +          "maximum": 9007199254740991,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "session_duration_minutes": {
      +          "description": "Source-recorded duration of each group session in this declaration, not an alias for individual interview duration.",
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        "source_modality": {
      +          "enum": [
      +            "direct_observation",
      +            "documentary",
      +            "secondary_summary",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "source_ref": {
      +      "maxLength": 512,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "source_ref",
      +    "fields"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / evidence_pack / items / properties / evidence_origin / description
      Previous value: -"Alias for source_class. Source-class precedence: source_class, evidence_origin, source_family, then evidence_type."New value: +"Declared source origin. Explicit public/documentary sources are not caller fieldwork solely because evidence_type is survey. Conflicting explicit field origins still block; never relabel to pass."
    • changedInput schema / properties / evidence_pack / items / properties / sample_size / description
      Previous value: -"Actual sample size; required for individual face-to-face/telephone interviews, not invented for documentary evidence."New value: +"Actual sample size; required for collector-administered modes, including groups. Group sample cannot exceed session_count times participants_per_session. All supplied aliases must agree; never invent a sample for documentary or self-administered evidence."
    • changedInput schema / properties / evidence_pack / items / properties / source_family / description
      Previous value: -"Compatibility origin label; source_class takes precedence."New value: +"Compatibility origin label. Explicit field/public conflicts, including provenance_ledger.source_family, require reconciliation; one label cannot erase another."
    • changedInput schema / properties / market_scope / description
      Previous value: -"Declared decision geography, not source geography. Supply district/districts or decision_scope_level country/subnational; subnational requires locality. No district is inferred from claim prose."New value: +"Declared decision geography, not source geography. Supply district/districts or decision_scope_level country/subnational; subnational requires locality. A bounded Uganda target-name cross-check can require scope review, never insert districts or establish field coverage."
    • addedOutput schema / properties / claim_review / properties / issues / items / properties / allowed_values
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / claim_review / properties / issues / items / properties / code / description
      Previous value: -"Stable correction code."New value: +"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."
    • addedOutput schema / properties / claim_review / properties / linkage_gaps / items / properties / allowed_values
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / claim_review / properties / linkage_gaps / items / properties / code / description
      Previous value: -"Stable correction code."New value: +"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."
    • changedOutput schema / properties / code / description
      Previous value: -"OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY"New value: +"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."
    • addedOutput schema / properties / evidence_fit / properties / issues / items / properties / allowed_values
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / evidence_fit / properties / issues / items / properties / code / description
      Previous value: -"Stable correction code."New value: +"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."
    • addedOutput schema / properties / evidence_input_feedback / properties / issues / items / properties / allowed_values
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / evidence_input_feedback / properties / issues / items / properties / code / description
      Previous value: -"Stable correction code."New value: +"Codes: FIELD_PROVENANCE_REQUIRED, FIELD_PROVENANCE_CONFLICT, FIELDWORK_CAPACITY_CONTRADICTION, SOURCE_INDEPENDENCE_CONTRADICTION, SOURCE_VERIFICATION_CONTRADICTION, FIELD_SOURCE_MODALITY_CONFLICT, DECISION_GEOGRAPHY_SCOPE_REQUIRED, DECISION_SCOPE_REQUIRED, DECISION_SCOPE_REVIEW_REQUIRED, DECISION_SCOPE_CROSS_CHECK_LIMIT, SOURCE_EXTRACTION_INVALID, SOURCE_EXTRACTION_REFERENCE_CONFLICT, ADVERSE_SOURCE_REVIEW_REQUIRED, INVALID_CLAIM_INPUT, OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY, ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Correct indexed evidence_input_feedback/evidence_fit paths and missing_fields against originals. INVALID_CLAIM_INPUT is HTTP 422 on claim-consuming REST routes; correct root or decision_result claim/citation paths in details/validation_errors without deleting adverse evidence. Never invent or relabel facts. Explicit adverse states need review, not approved support. These checks do not authenticate sources or authorize action. Recovery: /docs/mcp-integration.md."
  12. Changed12 schema fields changed
    • addedInput schema / properties / evidence_items / items / properties / collection_context
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Source-grounded collection declarations, not source authentication. Unknown facts must remain missing; do not invent values to pass. Field decision use requires source modality, collector relationship, interview mode, source-document identity and an explicit parent-source list. Individual face-to-face/telephone collection also requires staffing, duration, total available minutes per collector and sample size. Independent verification labels require a separate reviewer relationship; persisted review is still checked separately.",
      +  "properties": {
      +    "collector_relationship": {
      +      "enum": [
      +        "independent",
      +        "employee",
      +        "company_staff",
      +        "internal",
      +        "contractor",
      +        "partner",
      +        "self_collected",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "enumerator_count": {
      +      "maximum": 9007199254740991,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "fieldwork_window_minutes": {
      +      "description": "Total available collection minutes per collector across the entire period, not daily or team-person-minutes.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "interview_duration_minutes": {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "interview_mode": {
      +      "enum": [
      +        "face_to_face",
      +        "telephone",
      +        "online",
      +        "focus_group",
      +        "group_interview",
      +        "observation",
      +        "administrative_record",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "reviewer_relationship": {
      +      "enum": [
      +        "independent",
      +        "employee",
      +        "company_staff",
      +        "internal",
      +        "contractor",
      +        "partner",
      +        "self_collected",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "sample_size": {
      +      "maximum": 9007199254740991,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "source_modality": {
      +      "enum": [
      +        "direct_observation",
      +        "documentary",
      +        "secondary_summary",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / evidence_items / items / properties / provenance_ledger / description
      Added value: +"Field evidence needs source_doc_id and an explicit parent_source_ids array (empty allowed). Unknown lineage stays incomplete, not invented."
    • addedInput schema / properties / evidence_items / items / properties / provenance_ledger / properties / source_family
      Added value: +{
      +  "description": "Declared source family; distinct labels do not prove independence.",
      +  "type": "string"
      +}
    • addedInput schema / properties / evidence_items / items / properties / sample_size
      Added value: +{
      +  "description": "Actual sample size; required for individual face-to-face/telephone interviews, not invented for documentary evidence.",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / evidence_items / items / properties / survey_payload
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Existing sample_size alias; all supplied sample-size aliases must agree.",
      +  "properties": {
      +    "sample_size": {
      +      "maximum": 9007199254740991,
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / collection_context
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Source-grounded collection declarations, not source authentication. Unknown facts must remain missing; do not invent values to pass. Field decision use requires source modality, collector relationship, interview mode, source-document identity and an explicit parent-source list. Individual face-to-face/telephone collection also requires staffing, duration, total available minutes per collector and sample size. Independent verification labels require a separate reviewer relationship; persisted review is still checked separately.",
      +  "properties": {
      +    "collector_relationship": {
      +      "enum": [
      +        "independent",
      +        "employee",
      +        "company_staff",
      +        "internal",
      +        "contractor",
      +        "partner",
      +        "self_collected",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "enumerator_count": {
      +      "maximum": 9007199254740991,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "fieldwork_window_minutes": {
      +      "description": "Total available collection minutes per collector across the entire period, not daily or team-person-minutes.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "interview_duration_minutes": {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "interview_mode": {
      +      "enum": [
      +        "face_to_face",
      +        "telephone",
      +        "online",
      +        "focus_group",
      +        "group_interview",
      +        "observation",
      +        "administrative_record",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "reviewer_relationship": {
      +      "enum": [
      +        "independent",
      +        "employee",
      +        "company_staff",
      +        "internal",
      +        "contractor",
      +        "partner",
      +        "self_collected",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "sample_size": {
      +      "maximum": 9007199254740991,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "source_modality": {
      +      "enum": [
      +        "direct_observation",
      +        "documentary",
      +        "secondary_summary",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / provenance_ledger / description
      Added value: +"Field evidence needs source_doc_id and an explicit parent_source_ids array (empty allowed). Unknown lineage stays incomplete, not invented."
    • addedInput schema / properties / evidence_pack / items / properties / provenance_ledger / properties / source_family
      Added value: +{
      +  "description": "Declared source family; distinct labels do not prove independence.",
      +  "type": "string"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / sample_size
      Added value: +{
      +  "description": "Actual sample size; required for individual face-to-face/telephone interviews, not invented for documentary evidence.",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / survey_payload
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Existing sample_size alias; all supplied sample-size aliases must agree.",
      +  "properties": {
      +    "sample_size": {
      +      "maximum": 9007199254740991,
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / market_scope
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Declared decision geography, not source geography. Supply district/districts or decision_scope_level country/subnational; subnational requires locality. No district is inferred from claim prose.",
      +  "properties": {
      +    "city": {
      +      "description": "Declared target city.",
      +      "type": "string"
      +    },
      +    "corridor": {
      +      "description": "Declared target corridor.",
      +      "type": "string"
      +    },
      +    "country": {
      +      "description": "Declared target country, not the source country.",
      +      "type": "string"
      +    },
      +    "decision_scope_level": {
      +      "description": "Explicit decision scope. Subnational needs declared locality. A country-only decision must be declared, not inferred from absent districts.",
      +      "enum": [
      +        "country",
      +        "subnational"
      +      ],
      +      "type": "string"
      +    },
      +    "district": {
      +      "description": "Nonblank target district; not verified source coverage.",
      +      "pattern": "\\S",
      +      "type": "string"
      +    },
      +    "districts": {
      +      "description": "Target districts as nonblank strings; empty is allowed but does not declare subnational scope.",
      +      "items": {
      +        "pattern": "\\S",
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "micro_context": {
      +      "description": "Explicit local decision context.",
      +      "type": "string"
      +    },
      +    "region": {
      +      "description": "Declared target region.",
      +      "type": "string"
      +    },
      +    "town_or_zone": {
      +      "description": "Declared target town or zone.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / evidence_fit / properties / decision_scope
      Added value: +{
      +  "properties": {
      +    "level": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "missing_fields": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "status": {
      +      "enum": [
      +        "declared",
      +        "unresolved",
      +        "not_requested"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  13. Changed18 schema fields changed
    • changedInput schema / properties / evidence_items / items / description
      Previous value: -"A caller-declared, consented and redacted evidence item. No required fields at intake: incomplete items receive correction feedback. Passing coverage never verifies truth, permission or readiness."New value: +"A caller-declared, consented and redacted evidence item. No required fields at intake: incomplete items receive correction feedback. Explicit artifact_role, evidence_role, source_role, record_role and content_role declarations admit only original_source_record, independent_evaluation or human_attestation; other declared roles are rejected with ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Omission remains supported for legacy items. Passing coverage never verifies truth, permission or readiness."
    • addedInput schema / properties / evidence_items / items / properties / evidence_geography / properties / district
      Added value: +{
      +  "description": "Nonblank declared source district, not verified local coverage.",
      +  "pattern": "\\S",
      +  "type": "string"
      +}
    • addedInput schema / properties / evidence_items / items / properties / evidence_geography / properties / districts
      Added value: +{
      +  "description": "Declared source districts, each a nonblank string. An empty array is allowed. Not verified fieldwork or representative coverage.",
      +  "items": {
      +    "pattern": "\\S",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / evidence_items / items / properties / evidence_geography / properties / town_or_zone
      Added value: +{
      +  "description": "Declared source town or zone.",
      +  "type": "string"
      +}
    • addedInput schema / properties / evidence_items / items / properties / geography / additionalProperties
      Added value: +true
    • changedInput schema / properties / evidence_items / items / properties / geography / description
      Previous value: -"Source country name/code or broader geographic description. Known country conflicts are flagged; local applicability is not authenticated."New value: +"Source country name/code or broader description, or an object with country, city, region and town_or_zone strings, a nonblank district string and a districts array of nonblank strings (empty allowed). Known country conflicts, including conflicting evidence_geography.country, are flagged; local applicability is not authenticated."
    • addedInput schema / properties / evidence_items / items / properties / geography / properties
      Added value: +{
      +  "city": {
      +    "description": "Declared source city.",
      +    "type": "string"
      +  },
      +  "country": {
      +    "description": "Declared source country, not the target country.",
      +    "type": "string"
      +  },
      +  "district": {
      +    "description": "Nonblank declared source district, not verified local coverage.",
      +    "pattern": "\\S",
      +    "type": "string"
      +  },
      +  "districts": {
      +    "description": "Declared source districts, each a nonblank string. An empty array is allowed. Not verified fieldwork or representative coverage.",
      +    "items": {
      +      "pattern": "\\S",
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "region": {
      +    "description": "Declared source region.",
      +    "type": "string"
      +  },
      +  "town_or_zone": {
      +    "description": "Declared source town or zone.",
      +    "type": "string"
      +  }
      +}
    • changedInput schema / properties / evidence_items / items / properties / geography / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "object"
      +]
    • changedInput schema / properties / evidence_items / items / properties / source_class / description
      Previous value: -"Origin label, for example entity_reported, regulator_published, structured_field_research, operational_data or counterparty_reference. Not a claim of independence."New value: +"Origin label, for example entity_reported, regulator_published, structured_field_research, operational_data or counterparty_reference. model_inferred is not source evidence and is rejected with ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Never relabel it to pass. Origin is not a claim of independence."
    • changedInput schema / properties / evidence_pack / items / description
      Previous value: -"A caller-declared, consented and redacted evidence item. No required fields at intake: incomplete items receive correction feedback. Passing coverage never verifies truth, permission or readiness."New value: +"A caller-declared, consented and redacted evidence item. No required fields at intake: incomplete items receive correction feedback. Explicit artifact_role, evidence_role, source_role, record_role and content_role declarations admit only original_source_record, independent_evaluation or human_attestation; other declared roles are rejected with ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Omission remains supported for legacy items. Passing coverage never verifies truth, permission or readiness."
    • addedInput schema / properties / evidence_pack / items / properties / evidence_geography / properties / district
      Added value: +{
      +  "description": "Nonblank declared source district, not verified local coverage.",
      +  "pattern": "\\S",
      +  "type": "string"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / evidence_geography / properties / districts
      Added value: +{
      +  "description": "Declared source districts, each a nonblank string. An empty array is allowed. Not verified fieldwork or representative coverage.",
      +  "items": {
      +    "pattern": "\\S",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / evidence_geography / properties / town_or_zone
      Added value: +{
      +  "description": "Declared source town or zone.",
      +  "type": "string"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / geography / additionalProperties
      Added value: +true
    • changedInput schema / properties / evidence_pack / items / properties / geography / description
      Previous value: -"Source country name/code or broader geographic description. Known country conflicts are flagged; local applicability is not authenticated."New value: +"Source country name/code or broader description, or an object with country, city, region and town_or_zone strings, a nonblank district string and a districts array of nonblank strings (empty allowed). Known country conflicts, including conflicting evidence_geography.country, are flagged; local applicability is not authenticated."
    • addedInput schema / properties / evidence_pack / items / properties / geography / properties
      Added value: +{
      +  "city": {
      +    "description": "Declared source city.",
      +    "type": "string"
      +  },
      +  "country": {
      +    "description": "Declared source country, not the target country.",
      +    "type": "string"
      +  },
      +  "district": {
      +    "description": "Nonblank declared source district, not verified local coverage.",
      +    "pattern": "\\S",
      +    "type": "string"
      +  },
      +  "districts": {
      +    "description": "Declared source districts, each a nonblank string. An empty array is allowed. Not verified fieldwork or representative coverage.",
      +    "items": {
      +      "pattern": "\\S",
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "region": {
      +    "description": "Declared source region.",
      +    "type": "string"
      +  },
      +  "town_or_zone": {
      +    "description": "Declared source town or zone.",
      +    "type": "string"
      +  }
      +}
    • changedInput schema / properties / evidence_pack / items / properties / geography / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "object"
      +]
    • changedInput schema / properties / evidence_pack / items / properties / source_class / description
      Previous value: -"Origin label, for example entity_reported, regulator_published, structured_field_research, operational_data or counterparty_reference. Not a claim of independence."New value: +"Origin label, for example entity_reported, regulator_published, structured_field_research, operational_data or counterparty_reference. model_inferred is not source evidence and is rejected with ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. Never relabel it to pass. Origin is not a claim of independence."
  14. Changed6 schema fields changed
    • addedOutput schema / description
      Added value: +"Public preflight serves no calibration. Licensed calibration_disposition (calibration_retired or calibration_quarantined) prohibits serving or replacement; it does not verify source truth."
    • addedOutput schema / properties / code / description
      Added value: +"OUTPUT_RECEIPT_NOT_REQUEST_AUTHORITY"
    • addedOutput schema / properties / receipt_evidence_findings
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "evidence_id": {
      +        "maxLength": 160,
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "evidence_id_truncated": {
      +        "type": "boolean"
      +      },
      +      "marker": {
      +        "type": "string"
      +      },
      +      "path": {
      +        "description": "RFC 6901 JSON Pointer into the submitted body. Truncated pointers are not directly resolvable.",
      +        "maxLength": 1024,
      +        "type": "string"
      +      },
      +      "path_truncated": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "path",
      +      "evidence_id",
      +      "marker",
      +      "path_truncated",
      +      "evidence_id_truncated"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 15,
      +  "type": "array"
      +}
    • addedOutput schema / properties / receipt_validation
      Added value: +{
      +  "properties": {
      +    "expiry": {
      +      "enum": [
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "performed": {
      +      "enum": [
      +        false
      +      ],
      +      "type": "boolean"
      +    },
      +    "revocation": {
      +      "enum": [
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "status": {
      +      "enum": [
      +        "not_checked"
      +      ],
      +      "type": "string"
      +    },
      +    "validity": {
      +      "enum": [
      +        "unknown"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / total_errors
      Added value: +{
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / validation_errors_truncated
      Added value: +{
      +  "type": "boolean"
      +}
  15. Changed2 schema fields changed
    • addedOutput schema / properties / activation_outcome / description
      Added value: +"relevance_unresolved: clarify scope."
    • addedOutput schema / properties / status / description
      Added value: +"awaiting_scope_clarification: ask scope."
  16. Changed1 schema field changed
    • addedOutput schema / properties / evidence_field_guide
      Added value: +{
      +  "description": "Self-contained public evidence field types and unknown-metadata policy. Formatting guidance, not verification or authority.",
      +  "type": "string"
      +}
  17. Changed1 schema field changed
    • addedOutput schema / properties / evidence_intake
      Added value: +{
      +  "properties": {
      +    "boundary": {
      +      "description": "Intake format is not evidence assessment.",
      +      "type": "string"
      +    },
      +    "content_assessment_performed": {
      +      "type": "boolean"
      +    },
      +    "contract_version": {
      +      "description": "Intake disclosure version.",
      +      "type": "string"
      +    },
      +    "evidence_count_semantics": {
      +      "description": "Counts submitted entries, not underlying records or verified sources.",
      +      "type": "string"
      +    },
      +    "source_authenticity_verified": {
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "enum": [
      +        "invalid_submission",
      +        "described_not_structured",
      +        "no_evidence_supplied",
      +        "structured_items_supplied",
      +        "mixed_descriptions_and_structured_items"
      +      ],
      +      "type": "string"
      +    },
      +    "structured_item_count": {
      +      "type": "integer"
      +    },
      +    "underlying_records_checked": {
      +      "type": "boolean"
      +    },
      +    "unstructured_description_count": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  18. Changed4 schema fields changed
    • addedOutput schema / properties / claim_review / properties / content_item_count
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / claim_review / properties / linkage_gaps
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "blocking": {
      +        "type": "boolean"
      +      },
      +      "code": {
      +        "description": "Stable correction code.",
      +        "type": "string"
      +      },
      +      "message": {
      +        "description": "Correction without echoing source content.",
      +        "type": "string"
      +      },
      +      "path": {
      +        "description": "Indexed submitted payload path.",
      +        "type": "string"
      +      },
      +      "severity": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / claim_review / properties / linkage_gaps_truncated
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / claim_review / properties / unlinked_evidence_count
      Added value: +{
      +  "type": "integer"
      +}
  19. Changed8 schema fields changed
    • addedInput schema / properties / claims
      Added value: +{
      +  "description": "Optional explicit target claims and source-specific support links. Reuses the governed claim-audit vocabulary. Public links are caller declarations, never authenticated reviewer attestations.",
      +  "items": {
      +    "properties": {
      +      "claim": {
      +        "description": "Minimal public-safe target proposition.",
      +        "type": "string"
      +      },
      +      "claim_id": {
      +        "description": "Opaque claim identifier.",
      +        "type": "string"
      +      },
      +      "support_links": {
      +        "items": {
      +          "properties": {
      +            "claim_id": {
      +              "description": "Must match the containing claim.",
      +              "type": "string"
      +            },
      +            "evidence_id": {
      +              "description": "Must identify an item in this complete evidence pack.",
      +              "type": "string"
      +            },
      +            "locator": {
      +              "description": "Specific page, cell or section. A locator is not proof.",
      +              "type": "string"
      +            },
      +            "relationship": {
      +              "enum": [
      +                "direct_support",
      +                "qualifies",
      +                "contradicts",
      +                "context_only"
      +              ],
      +              "type": "string"
      +            },
      +            "review_event_id": {
      +              "description": "Only the licensed review service can check this event; ignored as authority by public preflight.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "claim_id",
      +            "evidence_id",
      +            "relationship",
      +            "locator"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "claim_id",
      +      "claim"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / claim_review
      Added value: +{
      +  "properties": {
      +    "blocking": {
      +      "type": "boolean"
      +    },
      +    "boundary": {
      +      "type": "string"
      +    },
      +    "claim_count": {
      +      "type": "integer"
      +    },
      +    "content_assessment_performed": {
      +      "type": "boolean"
      +    },
      +    "declared_contradiction_count": {
      +      "type": "integer"
      +    },
      +    "declared_qualification_count": {
      +      "type": "integer"
      +    },
      +    "issues": {
      +      "items": {
      +        "properties": {
      +          "blocking": {
      +            "type": "boolean"
      +          },
      +          "code": {
      +            "description": "Stable correction code.",
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "Correction without echoing source content.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "Indexed submitted payload path.",
      +            "type": "string"
      +          },
      +          "severity": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "links": {
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "source_authenticity_verified": {
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "unlinked_claim_count": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / decision_domains
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / domain_routing_basis
      Added value: +{
      +  "description": "Routing basis, not a verified classification.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / evidence_fit
      Added value: +{
      +  "properties": {
      +    "analysis_date": {
      +      "type": "string"
      +    },
      +    "analysis_timezone": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "blocking": {
      +      "type": "boolean"
      +    },
      +    "coverage_exclusion_count": {
      +      "type": "integer"
      +    },
      +    "issues": {
      +      "items": {
      +        "properties": {
      +          "blocking": {
      +            "type": "boolean"
      +          },
      +          "code": {
      +            "description": "Stable correction code.",
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "Correction without echoing source content.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "Indexed submitted payload path.",
      +            "type": "string"
      +          },
      +          "severity": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "source_authenticity_verified": {
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / evidence_input_feedback
      Added value: +{
      +  "properties": {
      +    "contract_version": {
      +      "description": "Feedback version.",
      +      "type": "string"
      +    },
      +    "error_count": {
      +      "type": "integer"
      +    },
      +    "issues": {
      +      "items": {
      +        "properties": {
      +          "blocking": {
      +            "type": "boolean"
      +          },
      +          "code": {
      +            "description": "Stable correction code.",
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "Correction without echoing source content.",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "Indexed submitted payload path.",
      +            "type": "string"
      +          },
      +          "severity": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "issues_truncated": {
      +      "type": "boolean"
      +    },
      +    "warning_count": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / evidence_requirements
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / source_review
      Added value: +{
      +  "properties": {
      +    "evidence_strength": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "required_before_consequential_reliance": {
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "tasks": {
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  20. Changed6 schema fields changed
    • changedInput schema / properties / analysis_date / description
      Previous value: -"Optional YYYY-MM-DD or ISO timestamp with timezone, no later than today; defaults to the server UTC date. Carried through the public handoff."New value: +"Optional YYYY-MM-DD or ISO timestamp with timezone, no later than today in analysis_timezone (UTC by default). Defaults to the current date in that calendar. Carried through the public handoff."
    • addedInput schema / properties / analysis_timezone
      Added value: +{
      +  "description": "Optional IANA timezone, for example Africa/Nairobi, for the analysis calendar. Defaults to UTC; never inferred from country or IP. Date-only values keep their declared calendar day.",
      +  "type": "string"
      +}
    • changedInput schema / properties / evidence_items / items / properties / provenance_ledger / properties / source_locator / description
      Previous value: -"Redacted, reviewable document locator. Shared references count together."New value: +"Redacted document-specific locator, not the shared folder holding unrelated documents. Never invent a locator. Genuine shared upstream references count together."
    • changedInput schema / properties / evidence_items / items / properties / source_locator / description
      Previous value: -"Redacted, reviewable document locator. Shared references count together."New value: +"Redacted document-specific locator, not the shared folder holding unrelated documents. Never invent a locator. Genuine shared upstream references count together."
    • changedInput schema / properties / evidence_pack / items / properties / provenance_ledger / properties / source_locator / description
      Previous value: -"Redacted, reviewable document locator. Shared references count together."New value: +"Redacted document-specific locator, not the shared folder holding unrelated documents. Never invent a locator. Genuine shared upstream references count together."
    • changedInput schema / properties / evidence_pack / items / properties / source_locator / description
      Previous value: -"Redacted, reviewable document locator. Shared references count together."New value: +"Redacted document-specific locator, not the shared folder holding unrelated documents. Never invent a locator. Genuine shared upstream references count together."
  21. Changed11 schema fields changed
    • addedInput schema / properties / analysis_date
      Added value: +{
      +  "description": "Optional YYYY-MM-DD or ISO timestamp with timezone, no later than today; defaults to the server UTC date. Carried through the public handoff.",
      +  "type": "string"
      +}
    • addedInput schema / properties / context_freshness_window_days
      Added value: +{
      +  "description": "Optional caller-declared maximum evidence age in days. No universal freshness cutoff is invented when absent; age alone does not prove validity.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / properties / evidence_available / description
      Previous value: -"Optional context labels, not structured evidence and never counted as proof. Use evidence_pack for items."New value: +"Short optional context labels, not proof. For supplied document summaries use incomplete evidence_pack items instead; do not mark claims verified merely because a document exists."
    • addedInput schema / properties / evidence_items / items / properties / evidence_geography
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "city": {
      +      "description": "Declared source city.",
      +      "type": "string"
      +    },
      +    "country": {
      +      "description": "Declared source country, not the target country.",
      +      "type": "string"
      +    },
      +    "region": {
      +      "description": "Declared source region.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / evidence_items / items / properties / freshness_date
      Added value: +{
      +  "description": "Compatibility alias for source_date; conflicting supplied dates require correction.",
      +  "type": "string"
      +}
    • changedInput schema / properties / evidence_items / items / properties / geography / description
      Previous value: -"Geography represented by this source. Public preflight does not verify geographic relevance."New value: +"Source country name/code or broader geographic description. Known country conflicts are flagged; local applicability is not authenticated."
    • changedInput schema / properties / evidence_items / items / properties / source_date / description
      Previous value: -"Source date, preferably YYYY-MM-DD. Public preflight does not assess freshness or date validity."New value: +"Declared source date, YYYY-MM-DD or ISO timestamp with timezone. Date validity and age can be checked; the source and current applicability remain unverified."
    • addedInput schema / properties / evidence_pack / items / properties / evidence_geography
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "city": {
      +      "description": "Declared source city.",
      +      "type": "string"
      +    },
      +    "country": {
      +      "description": "Declared source country, not the target country.",
      +      "type": "string"
      +    },
      +    "region": {
      +      "description": "Declared source region.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / evidence_pack / items / properties / freshness_date
      Added value: +{
      +  "description": "Compatibility alias for source_date; conflicting supplied dates require correction.",
      +  "type": "string"
      +}
    • changedInput schema / properties / evidence_pack / items / properties / geography / description
      Previous value: -"Geography represented by this source. Public preflight does not verify geographic relevance."New value: +"Source country name/code or broader geographic description. Known country conflicts are flagged; local applicability is not authenticated."
    • changedInput schema / properties / evidence_pack / items / properties / source_date / description
      Previous value: -"Source date, preferably YYYY-MM-DD. Public preflight does not assess freshness or date validity."New value: +"Declared source date, YYYY-MM-DD or ISO timestamp with timezone. Date validity and age can be checked; the source and current applicability remain unverified."
  22. Changed9 schema fields changed
    • changedInput schema / properties / evidence_available / description
      Previous value: -"Unstructured evidence labels only. These are not counted as structured proof."New value: +"Optional context labels, not structured evidence and never counted as proof. Use evidence_pack for items."
    • changedInput schema / properties / evidence_items / description
      Previous value: -"Alias for evidence_pack."New value: +"Alias for evidence_pack. Supply one field, not conflicting copies."
    • addedInput schema / properties / evidence_items / items / description
      Added value: +"A caller-declared, consented and redacted evidence item. No required fields at intake: incomplete items receive correction feedback. Passing coverage never verifies truth, permission or readiness."
    • addedInput schema / properties / evidence_items / items / properties
      Added value: +{
      +  "claim": {
      +    "description": "Minimal, non-confidential claim supported by the item; do not send raw private interviews.",
      +    "type": "string"
      +  },
      +  "evidence_origin": {
      +    "description": "Alias for source_class. Source-class precedence: source_class, evidence_origin, source_family, then evidence_type.",
      +    "type": "string"
      +  },
      +  "evidence_type": {
      +    "description": "What was collected, for example interview, field observation or licence record. Not merely the conclusion.",
      +    "type": "string"
      +  },
      +  "geography": {
      +    "description": "Geography represented by this source. Public preflight does not verify geographic relevance.",
      +    "type": "string"
      +  },
      +  "id": {
      +    "description": "Optional item identifier. Does not establish a distinct source.",
      +    "type": "string"
      +  },
      +  "is_load_bearing": {
      +    "description": "Compatibility alias for load_bearing.",
      +    "type": "boolean"
      +  },
      +  "load_bearing": {
      +    "description": "True if the target recommendation materially depends on this item.",
      +    "type": "boolean"
      +  },
      +  "parent_source_ids": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "provenance_ledger": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "parent_source_ids": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "source_doc_id": {
      +        "description": "Opaque source-document reference, not an evidence-item ID or personal identifier.",
      +        "type": "string"
      +      },
      +      "source_locator": {
      +        "description": "Redacted, reviewable document locator. Shared references count together.",
      +        "type": "string"
      +      },
      +      "source_url": {
      +        "description": "Source reference only; the sandbox does not fetch or authenticate it.",
      +        "type": "string"
      +      },
      +      "synthetic_fields": {
      +        "description": "Source-reference fields that were generated rather than observed; these do not establish lineage.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "upstream_source_ids": {
      +        "description": "Disclose shared upstream sources; distinct identifiers do not prove independence.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "source_class": {
      +    "description": "Origin label, for example entity_reported, regulator_published, structured_field_research, operational_data or counterparty_reference. Not a claim of independence.",
      +    "type": "string"
      +  },
      +  "source_date": {
      +    "description": "Source date, preferably YYYY-MM-DD. Public preflight does not assess freshness or date validity.",
      +    "type": "string"
      +  },
      +  "source_doc_id": {
      +    "description": "Opaque source-document reference, not an evidence-item ID or personal identifier.",
      +    "type": "string"
      +  },
      +  "source_family": {
      +    "description": "Compatibility origin label; source_class takes precedence.",
      +    "type": "string"
      +  },
      +  "source_grade": {
      +    "description": "Caller-supplied grade. Not a substitute for verification or source lineage.",
      +    "type": "string"
      +  },
      +  "source_hash": {
      +    "description": "Optional SHA-256 source hash, 64 hexadecimal characters; a hash does not authenticate its origin.",
      +    "type": "string"
      +  },
      +  "source_locator": {
      +    "description": "Redacted, reviewable document locator. Shared references count together.",
      +    "type": "string"
      +  },
      +  "source_url": {
      +    "description": "Source reference only; the sandbox does not fetch or authenticate it.",
      +    "type": "string"
      +  },
      +  "stakeholder_class": {
      +    "description": "Role represented, for example guardian, customer, supplier or partner. Do not submit a person identifier.",
      +    "type": "string"
      +  },
      +  "status": {
      +    "description": "Legacy alias for verification_status.",
      +    "type": "string"
      +  },
      +  "upstream_source_ids": {
      +    "description": "Disclose shared upstream sources; distinct identifiers do not prove independence.",
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "verification_status": {
      +    "description": "Caller label. verified, independently_verified, corroborated, attested, confirmed and validated count for the structural prefilter only. self_attested, unverified, missing and other labels do not. Do not change labels without actually checking the source.",
      +    "type": "string"
      +  }
      +}
    • changedInput schema / properties / evidence_pack / description
      Previous value: -"Structured evidence items with source date, source class, geography, and provenance."New value: +"Full current evidence pack. Rechecks replace the pack; the server does not append or retrieve evidence."
    • addedInput schema / properties / evidence_pack / items / description
      Added value: +"A caller-declared, consented and redacted evidence item. No required fields at intake: incomplete items receive correction feedback. Passing coverage never verifies truth, permission or readiness."
    • addedInput schema / properties / evidence_pack / items / properties
      Added value: +{
      +  "claim": {
      +    "description": "Minimal, non-confidential claim supported by the item; do not send raw private interviews.",
      +    "type": "string"
      +  },
      +  "evidence_origin": {
      +    "description": "Alias for source_class. Source-class precedence: source_class, evidence_origin, source_family, then evidence_type.",
      +    "type": "string"
      +  },
      +  "evidence_type": {
      +    "description": "What was collected, for example interview, field observation or licence record. Not merely the conclusion.",
      +    "type": "string"
      +  },
      +  "geography": {
      +    "description": "Geography represented by this source. Public preflight does not verify geographic relevance.",
      +    "type": "string"
      +  },
      +  "id": {
      +    "description": "Optional item identifier. Does not establish a distinct source.",
      +    "type": "string"
      +  },
      +  "is_load_bearing": {
      +    "description": "Compatibility alias for load_bearing.",
      +    "type": "boolean"
      +  },
      +  "load_bearing": {
      +    "description": "True if the target recommendation materially depends on this item.",
      +    "type": "boolean"
      +  },
      +  "parent_source_ids": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "provenance_ledger": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "parent_source_ids": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "source_doc_id": {
      +        "description": "Opaque source-document reference, not an evidence-item ID or personal identifier.",
      +        "type": "string"
      +      },
      +      "source_locator": {
      +        "description": "Redacted, reviewable document locator. Shared references count together.",
      +        "type": "string"
      +      },
      +      "source_url": {
      +        "description": "Source reference only; the sandbox does not fetch or authenticate it.",
      +        "type": "string"
      +      },
      +      "synthetic_fields": {
      +        "description": "Source-reference fields that were generated rather than observed; these do not establish lineage.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "upstream_source_ids": {
      +        "description": "Disclose shared upstream sources; distinct identifiers do not prove independence.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "source_class": {
      +    "description": "Origin label, for example entity_reported, regulator_published, structured_field_research, operational_data or counterparty_reference. Not a claim of independence.",
      +    "type": "string"
      +  },
      +  "source_date": {
      +    "description": "Source date, preferably YYYY-MM-DD. Public preflight does not assess freshness or date validity.",
      +    "type": "string"
      +  },
      +  "source_doc_id": {
      +    "description": "Opaque source-document reference, not an evidence-item ID or personal identifier.",
      +    "type": "string"
      +  },
      +  "source_family": {
      +    "description": "Compatibility origin label; source_class takes precedence.",
      +    "type": "string"
      +  },
      +  "source_grade": {
      +    "description": "Caller-supplied grade. Not a substitute for verification or source lineage.",
      +    "type": "string"
      +  },
      +  "source_hash": {
      +    "description": "Optional SHA-256 source hash, 64 hexadecimal characters; a hash does not authenticate its origin.",
      +    "type": "string"
      +  },
      +  "source_locator": {
      +    "description": "Redacted, reviewable document locator. Shared references count together.",
      +    "type": "string"
      +  },
      +  "source_url": {
      +    "description": "Source reference only; the sandbox does not fetch or authenticate it.",
      +    "type": "string"
      +  },
      +  "stakeholder_class": {
      +    "description": "Role represented, for example guardian, customer, supplier or partner. Do not submit a person identifier.",
      +    "type": "string"
      +  },
      +  "status": {
      +    "description": "Legacy alias for verification_status.",
      +    "type": "string"
      +  },
      +  "upstream_source_ids": {
      +    "description": "Disclose shared upstream sources; distinct identifiers do not prove independence.",
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "verification_status": {
      +    "description": "Caller label. verified, independently_verified, corroborated, attested, confirmed and validated count for the structural prefilter only. self_attested, unverified, missing and other labels do not. Do not change labels without actually checking the source.",
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / stage / description
      Added value: +"Free-text venture stage, for example pre-MVP, pilot, grant-funded programme or scaling. No closed enum."
    • changedOutput schema / properties / example_next_request / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "null"
      +]
  23. Changed1 schema field changed
    • addedOutput schema / properties / next_steps
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "automatic_action_authorized": {
      +      "const": false,
      +      "type": "boolean"
      +    },
      +    "boundary": {
      +      "type": "string"
      +    },
      +    "offer_registry": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "options": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "label": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "format": "uri",
      +            "type": "string"
      +          },
      +          "when_to_use": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "label",
      +          "url",
      +          "when_to_use"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 3,
      +      "type": "array"
      +    },
      +    "purpose": {
      +      "const": "optional_routing_not_recommendation",
      +      "type": "string"
      +    },
      +    "schema_version": {
      +      "const": "mvr-optional-routing@1.0",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "schema_version",
      +    "purpose",
      +    "automatic_action_authorized",
      +    "boundary",
      +    "offer_registry",
      +    "options"
      +  ],
      +  "type": "object"
      +}
  24. Changed8 schema fields changed
    • addedOutput schema / properties / continuation_disposition
      Added value: +{
      +  "enum": [
      +    "call_now",
      +    "await_input",
      +    "terminal"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / mcp_next_call
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "null"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "arguments": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "payload": {
      +              "additionalProperties": true,
      +              "type": "object"
      +            }
      +          },
      +          "required": [
      +            "payload"
      +          ],
      +          "type": "object"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "arguments"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / mcp_next_tool / anyOf
      Added value: +[
      +  {
      +    "type": "null"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "arguments": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "payload": {
      +            "additionalProperties": true,
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "payload"
      +        ],
      +        "type": "object"
      +      },
      +      "tool_name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "tool_name",
      +      "arguments"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties / mcp_next_tool / type
      Removed value: -"object"
    • addedOutput schema / properties / required_user_inputs
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / workflow_expires_at
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / workflow_id
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / workflow_status
      Added value: +{
      +  "type": "string"
      +}
  25. Changed5 schema fields changed
    • addedInput schema / properties / evidence_available / description
      Added value: +"Unstructured evidence labels only. These are not counted as structured proof."
    • addedInput schema / properties / evidence_items
      Added value: +{
      +  "description": "Alias for evidence_pack.",
      +  "items": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / evidence_pack
      Added value: +{
      +  "description": "Structured evidence items with source date, source class, geography, and provenance.",
      +  "items": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / code
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / evidence_received
      Added value: +{
      +  "type": "object"
      +}
  26. Changed2 schema fields changed
    • addedOutput schema / properties / mvr_response_receipt / properties / mcp_protocol_versions
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / mvr_response_receipt / required
      Previous value: -[
      -  "receipt_schema_version",
      -  "mcp_tool",
      -  "core_api_version",
      -  "mcp_contract_version",
      -  "tool_profile_version",
      -  "sdk_version",
      -  "policy_version",
      -  "calibration_version",
      -  "deployment_revision",
      -  "host_recipe_version",
      -  "authority_boundary"
      -]New value: +[
      +  "receipt_schema_version",
      +  "mcp_tool",
      +  "core_api_version",
      +  "mcp_protocol_versions",
      +  "mcp_contract_version",
      +  "tool_profile_version",
      +  "sdk_version",
      +  "policy_version",
      +  "calibration_version",
      +  "deployment_revision",
      +  "host_recipe_version",
      +  "authority_boundary"
      +]
  27. Changed1 schema field changed
    • addedOutput schema / properties / mvr_response_receipt
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "authority_boundary": {
      +      "type": "string"
      +    },
      +    "calibration_version": {
      +      "type": "string"
      +    },
      +    "core_api_version": {
      +      "type": "string"
      +    },
      +    "deployment_revision": {
      +      "type": "string"
      +    },
      +    "host_recipe_version": {
      +      "type": "string"
      +    },
      +    "mcp_contract_version": {
      +      "type": "string"
      +    },
      +    "mcp_tool": {
      +      "type": "string"
      +    },
      +    "policy_version": {
      +      "type": "string"
      +    },
      +    "receipt_schema_version": {
      +      "type": "string"
      +    },
      +    "sdk_version": {
      +      "type": "string"
      +    },
      +    "tool_profile_version": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "receipt_schema_version",
      +    "mcp_tool",
      +    "core_api_version",
      +    "mcp_contract_version",
      +    "tool_profile_version",
      +    "sdk_version",
      +    "policy_version",
      +    "calibration_version",
      +    "deployment_revision",
      +    "host_recipe_version",
      +    "authority_boundary"
      +  ],
      +  "type": "object"
      +}
  28. Changed2 schema fields changed
    • addedOutput schema / properties / example_next_request
      Added value: +{
      +  "type": "object"
      +}
    • addedOutput schema / properties / mcp_next_tool
      Added value: +{
      +  "type": "object"
      +}
  29. Changed3 schema fields changed
    • addedOutput schema / properties / decision_domain
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / max_safe_action_available_now
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_three_unlocks
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  30. Added

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description goes further by stating the tool 'never authorizes', that web research 'does not replace MVR', that evidence must be consented/data-minimized/redacted and never contain secrets, and that rechecks replace rather than append the pack. These are substantive operating constraints an agent cannot get from the schema. The disclosure is buried in a semicolon chain rather than stated plainly, which costs it a point.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening is front-loaded well, but the body degenerates into a dense chain of schema-level minutiae ('source_date/freshness_date: YYYY, YYYY-MM, YYYY-MM-DD or ISO timestamp with timezone... Intervals have age_days:null and age_days_min/max') that duplicates or belongs in the schema. A 'Evidence input location: arguments' fragment is noise. Several sentences do not earn their place in a description whose job is selection and invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the safety profile. Still, for a 23-parameter, deeply nested tool, the description omits any explanation of the top-level identity/scoping fields (entity, sector, country, subject, decision_question, market_scope) and gives no indication of what the preflight's verdict structure or failure modes look like. Adequate, with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 65% schema coverage across 23 parameters, the schema carries most of the load and the description usefully reinforces the tricky parts: date precision rules, source_date_range bounds, verification_status semantics, and the *_role restriction to original_source_record/independent_evaluation/human_attestation with ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. However, roughly a third of the fields (entity, sector, country, subject, question, use_case, company_name, target_users, known_partners, relevance_check, stage) get no explanation at all, so it does not fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: a 'decision-governance preflight' that 'Checks market trust, permission, embeddedness, stakeholder readiness, evidence gaps; never authorizes.' That is concrete enough for an agent to know what it gets back. It does not differentiate itself from the sibling tools (mvr_decision_check, mvr_evidence_completeness), which sound like overlapping governance checks, so an agent cannot route between them from this text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' list (before enter, launch, scale, invest, lend, BNPL, partner, deploy; when asked to ignore/fabricate/transfer evidence) and an explicit 'Do not use when' list (not an internal data lookup or glossary; skip definitions of MVR, capitals, GDP, coding, writing, translation, travel, news). This is real when/when-not guidance. It never names a sibling tool as the alternative for excluded cases, so routing is implied rather than resolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.