EvidenceItem
Extensible source metadata. Unknown item-level field names receive non-blocking input_interpretation notices on successful licensed evidence responses; acceptance is not proof that a control was evaluated. Suggested names require checking source facts and are never applied automatically. Nested open metadata is not recursively classified by this notice mechanism. Recovery: 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.
Properties
| Name | Type | Description |
|---|---|---|
| id | string | |
| evidence_id | string | |
| claim | string | |
| load_bearing | boolean | |
| is_load_bearing | boolean | |
| source_date | string | 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 date |
| source_date_range | object | 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 e |
| source_url | string | |
| source_doc_id | string | |
| sample_size | integer | Actual sample for collector-administered evidence, including groups. Sample aliases must agree; never invent counts for documentary or self-administered sources. |
| population_size | integer | |
| population_definition | string | |
| sampling_method | string | Use census for a declared complete finite population; this does not override weighted sample admission. |
| is_complete_population | boolean | |
| census | boolean | Alias for is_complete_population. Only literal true with consistent positive integer sample_size = population_size enables the disclosure. |
| collection_context | object | 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 |
| evidence_type | string | |
| entity_archetype | string | |
| source_class | string | Source-evidence classes only. Model-inferred artifacts are context and are rejected with ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE. |
| source_grade | string | |
| stakeholder_class | string | |
| guardian_tier | string | Guardian role classification, not an adverse score setting. Only guardian evidence activates guardian-specific analysis; stance, observed substance and actual veto authority determine applicable gates |
| evidence_origin | string | Explicit public documentary survey tables do not require caller fieldwork metadata or become direct field coverage. Contradictory explicit field origins still require reconciliation. |
| collection_method | string | |
| source_confidence | string | |
| stance | string | Declared stakeholder stance. Opposed or hostile load-bearing evidence requires stakeholder review even when linked as direct_support. This does not rewrite the factual claim relationship or authentica |
| verification_status | string | Caller declaration, not independent verification. No confidence boost from this label. Disputed evidence blocks authorization until reconciled or segregated. |
| freshness_date | string | |
| evidence_geography | object | Use a supported ISO country code, not a country name. Explicit districts declare source coverage, not authenticity or representativeness. Do not relabel geography to match the decision. |
| geography | object | |
| temporal | object | |
| public_metric_scope | string | |
| public_metrics | object | |
| structured_values | object | Ingestible field-observed MVR dimension values. Canonical production scale is 0-100. Accepted core keys: permission, trust, belonging, embeddedness, reciprocity, cultural_fit, guardian_strength, conti |
| structured_values_scale | string | Optional hint for agents. Use '0-1 fraction' only when sending fractional structured_values; otherwise omit and send canonical 0-100 scores. |
| behavioral_values | object | Supported on corporate telemetry. The current check pairs high consumer field permission with low 30_day_active_retention_percent under the configured maturity policy, caps scale at pilot_ready and em |
| structured_values_provenance | object | Per-dimension map using exact keys present in structured_values, for example {trust:"observed",permission:"imputed"}. input_score_provenance is not a blanket override and is rejected as an unknown dim |
| human_reviewed | boolean | Caller-declared review required for AI-extracted material before strict or decisive use. Not identity verification, a signature, authenticated reviewer approval or independent source verification. |
| review_status | string | |
| reviewed_by | string | Caller-supplied reviewer name for AI-extracted material when human_reviewed=true. The name is not authenticated; supplying it does not establish identity, independence or that review occurred. |
| reviewed_at | string | |
| human_review | object | Optional structured review record; may include by/reviewer_id, status, and reviewed_at. |
| organ_attestation | object | MVR Examiner or other organ-produced evidence attestation. The deterministic kernel treats unreviewed organ evidence as imputed/non-decisive. |
| _verifier_attestation | object | Verifier-organ attestation for extraction review. Internal/audit use; unreviewed AI extraction remains non-decisive. |
| privacy_envelope | object | |
| uncertainty_envelope | object | Named 0-1 components influence evidence weighting. interval_80, score_point_estimate and basis are caller-supplied descriptions, not calibrated output intervals or gate overrides. Unknown component na |
| survey_payload | object | For survey evidence, include survey_name, population_definition, sampling_method and sample_frame. Panel and census are accepted sampling methods. Census additionally requires consistent declared popu |
| payload | object | Generic typed evidence payload, including telemetry or evaluation details. Retains supplied context only; prose does not become observed numeric scores or authenticated proof. Evaluation payloads need |
| program_payload | object | |
| admin_data_payload | object | |
| retail_audit_payload | object | |
| provenance_ledger | object | |
| source_artifacts | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/africanmarketos-com/json-schema/africanmarketos-com-evidence-item-schema.json",
"title": "EvidenceItem",
"description": "Extensible source metadata. Unknown item-level field names receive non-blocking input_interpretation notices on successful licensed evidence responses; acceptance is not proof that a control was evaluated. Suggested names require checking source facts and are never applied automatically. Nested open metadata is not recursively classified by this notice mechanism. Recovery: 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.",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/africanmarketos-com-openapi.yml#/components/schemas/EvidenceItem",
"type": "object",
"additionalProperties": true,
"x-compatible-item-field-names": [
"provenance",
"privacy",
"modality",
"pack_type",
"source_type",
"source_family",
"source_locator",
"source_hash",
"upstream_source_ids",
"parent_source_ids",
"support_links",
"source_relationship",
"claim_id",
"collected_at",
"submitted_at",
"public_metric_period_end",
"collection_period_start",
"collection_period_end",
"score_scale",
"value_scale",
"scale",
"category",
"subject",
"demographics",
"independence_metadata",
"dependence_metadata",
"independence_group_id",
"dependency_group_id",
"independence_basis",
"event_id",
"dataset_id",
"method_id",
"instrument_id",
"collector_id",
"error_process_id",
"source_review",
"review",
"reviewer_id",
"extraction_method",
"extraction_confidence"
],
"properties": {
"id": {
"type": "string"
},
"evidence_id": {
"type": "string"
},
"claim": {
"type": "string"
},
"load_bearing": {
"type": "boolean"
},
"is_load_bearing": {
"type": "boolean"
},
"source_date": {
"type": "string",
"minLength": 4,
"maxLength": 32,
"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. Metadata only: typed scoring still requires an exact freshness date and excludes partial-date or range-bearing items."
},
"source_date_range": {
"type": "object",
"additionalProperties": false,
"required": [
"earliest",
"latest"
],
"properties": {
"earliest": {
"type": "string",
"minLength": 4,
"maxLength": 32,
"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."
},
"latest": {
"type": "string",
"minLength": 4,
"maxLength": 32,
"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."
}
},
"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."
},
"source_url": {
"type": "string"
},
"source_doc_id": {
"type": "string"
},
"sample_size": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Actual sample for collector-administered evidence, including groups. Sample aliases must agree; never invent counts for documentary or self-administered sources."
},
"population_size": {
"type": "integer",
"minimum": 1
},
"population_definition": {
"type": "string"
},
"sampling_method": {
"type": "string",
"description": "Use census for a declared complete finite population; this does not override weighted sample admission."
},
"is_complete_population": {
"type": "boolean"
},
"census": {
"type": "boolean",
"description": "Alias for is_complete_population. Only literal true with consistent positive integer sample_size = population_size enables the disclosure."
},
"collection_context": {
"type": "object",
"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. 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.",
"properties": {
"source_modality": {
"type": "string",
"enum": [
"direct_observation",
"documentary",
"secondary_summary",
"unknown"
]
},
"collector_relationship": {
"type": "string",
"enum": [
"independent",
"employee",
"company_staff",
"internal",
"contractor",
"partner",
"self_collected",
"unknown"
],
"pattern": "\\S"
},
"reviewer_relationship": {
"type": "string",
"enum": [
"independent",
"employee",
"company_staff",
"internal",
"contractor",
"partner",
"self_collected",
"unknown"
]
},
"interview_mode": {
"type": "string",
"enum": [
"face_to_face",
"telephone",
"online",
"focus_group",
"group_interview",
"observation",
"administrative_record",
"unknown"
],
"pattern": "\\S"
},
"collection_administration": {
"type": "string",
"enum": [
"collector_administered",
"self_administered",
"automated",
"unknown"
],
"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."
},
"enumerator_count": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"interview_duration_minutes": {
"type": "number",
"exclusiveMinimum": true,
"description": "Collector time per individual interview or per observed/processed sample record for collector-administered non-group modes.",
"minimum": 0
},
"fieldwork_window_minutes": {
"type": "number",
"exclusiveMinimum": true,
"description": "Total available collection minutes per collector across the entire period, not daily or team-person-minutes.",
"minimum": 0
},
"session_count": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Actual number of group sessions in the source records."
},
"participants_per_session": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Source-grounded maximum participants in any session. Sample size cannot exceed session_count times this bound; no default group size is assumed."
},
"session_duration_minutes": {
"type": "number",
"exclusiveMinimum": true,
"description": "Source-recorded duration of each group session in this declaration, not an alias for individual interview duration.",
"minimum": 0
},
"collectors_per_session": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Collectors required concurrently for each group session, drawn from enumerator_count. No default facilitator count is assumed."
},
"sample_size": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"source_extraction": {
"type": "object",
"additionalProperties": false,
"required": [
"source_ref",
"fields"
],
"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": {
"source_ref": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"fields": {
"type": "object",
"additionalProperties": false,
"properties": {
"source_modality": {
"type": "string",
"enum": [
"direct_observation",
"documentary",
"secondary_summary",
"unknown"
]
},
"collector_relationship": {
"type": "string",
"enum": [
"independent",
"employee",
"company_staff",
"internal",
"contractor",
"partner",
"self_collected",
"unknown"
]
},
"reviewer_relationship": {
"type": "string",
"enum": [
"independent",
"employee",
"company_staff",
"internal",
"contractor",
"partner",
"self_collected",
"unknown"
]
},
"interview_mode": {
"type": "string",
"enum": [
"face_to_face",
"telephone",
"online",
"focus_group",
"group_interview",
"observation",
"administrative_record",
"unknown"
]
},
"collection_administration": {
"type": "string",
"enum": [
"collector_administered",
"self_administered",
"automated",
"unknown"
],
"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."
},
"enumerator_count": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"interview_duration_minutes": {
"type": "number",
"exclusiveMinimum": true,
"description": "Collector time per individual interview or per observed/processed sample record for collector-administered non-group modes.",
"minimum": 0
},
"fieldwork_window_minutes": {
"type": "number",
"exclusiveMinimum": true,
"description": "Total available collection minutes per collector across the entire period, not daily or team-person-minutes.",
"minimum": 0
},
"session_count": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Actual number of group sessions in the source records."
},
"participants_per_session": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Source-grounded maximum participants in any session. Sample size cannot exceed session_count times this bound; no default group size is assumed."
},
"session_duration_minutes": {
"type": "number",
"exclusiveMinimum": true,
"description": "Source-recorded duration of each group session in this declaration, not an alias for individual interview duration.",
"minimum": 0
},
"collectors_per_session": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Collectors required concurrently for each group session, drawn from enumerator_count. No default facilitator count is assumed."
},
"sample_size": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
}
}
}
},
"collection_tool": {
"type": "string",
"enum": [
"structured_interview_protocol",
"expert_ethnographic_observation",
"field_observation",
"survey_platform_verified",
"survey_paper_based",
"key_informant_interview",
"team_consensus_estimate",
"founder_intuition",
"inferred_from_secondary",
"direct",
"inferred",
"secondary_source",
"corporate_telemetry",
"database_aggregation",
"expert_opinion",
"intercept_interview"
]
},
"population_size": {
"type": "integer",
"minimum": 1
},
"population_definition": {
"type": "string"
},
"sampling_method": {
"type": "string",
"description": "Use census for a declared complete finite population; this does not override weighted sample admission."
},
"is_complete_population": {
"type": "boolean"
},
"census": {
"type": "boolean",
"description": "Alias for is_complete_population. Only literal true with consistent positive integer sample_size = population_size enables the disclosure."
}
}
},
"evidence_type": {
"type": "string",
"enum": [
"public_filing",
"survey",
"interview",
"observation",
"telemetry",
"admin_data",
"evaluation",
"retail_audit",
"social_listening",
"partner_network",
"program_monitoring"
]
},
"entity_archetype": {
"type": "string",
"enum": [
"telecom_operator",
"mobile_money_operator",
"fintech_platform",
"financial_services_bank",
"fintech_lending",
"logistics_platform",
"energy_utility",
"extractives_operator",
"real_estate_construction",
"education_provider",
"passenger_mobility",
"b2b_saas_platform",
"healthtech_platform",
"insurance_platform",
"fmcg_brand",
"retail_chain",
"ecommerce_platform",
"manufacturer",
"distributor_network",
"ngo",
"development_program",
"public_institution",
"survey_dataset",
"solo_entrepreneur",
"family_business",
"cooperative_sacco",
"cross_border_trader",
"university_spinout",
"diaspora_venture",
"creator_economy_individual",
"agritech_aggregator",
"impact_enterprise",
"religious_institution",
"chama_savings_group"
]
},
"source_class": {
"type": "string",
"enum": [
"entity_reported",
"independently_audited",
"regulator_published",
"administrative_record",
"probability_sample_survey",
"nonprobability_survey",
"structured_field_research",
"third_party_evaluation",
"retail_audit",
"telemetry_internal",
"media_reported"
],
"description": "Source-evidence classes only. Model-inferred artifacts are context and are rejected with ARTIFACT_ROLE_NOT_SOURCE_EVIDENCE."
},
"source_grade": {
"type": "string",
"enum": [
"A",
"B",
"C",
"D"
]
},
"stakeholder_class": {
"type": "string",
"enum": [
"agent",
"anchor_customer",
"bank_lender",
"beneficiary",
"board",
"board_member",
"chama_member",
"channel_gatekeeper",
"chief",
"civil_society_org",
"clinic",
"community_guardian",
"community_leader",
"competitor",
"competitors",
"consumer",
"cooperative_member",
"court",
"courts",
"creditor",
"creditors",
"customary_land_authority",
"customer",
"customs",
"customs_authority",
"distributor",
"donor",
"donor_guardian",
"enumerator",
"farmer",
"field_agent",
"field_supervisor",
"gatekeeper",
"guarantor",
"guardian",
"guardian_node",
"implementing_partner",
"incumbent",
"incumbent_competitor",
"incumbents",
"influencer",
"informal_logistics",
"informal_logistics_partner",
"institutional_guardian",
"internal_operations",
"internal_operator",
"investor",
"investor_board",
"investors",
"journalist",
"journalists",
"judiciary",
"judiciary_court",
"labor_union",
"labour_union",
"land_custodian",
"land_owner",
"landlord",
"landowner",
"lender",
"lender_creditor",
"lenders",
"market_queen",
"media",
"media_press",
"member",
"micro_logistics",
"mobile_money_agent",
"organized_labour",
"platform_partner",
"political_guardian",
"press",
"public_official",
"regulator",
"regulatory_body",
"religious_leader",
"research_respondent_group",
"retail_partner",
"retailer",
"retailer_partner",
"revenue_authority",
"sacco_member",
"school",
"service_provider",
"shareholder",
"shareholders",
"supplier",
"suppliers",
"tax_authority",
"tax_revenue_authority",
"teacher",
"traditional_chief",
"union",
"upstream_supplier",
"upstream_vendor",
"vc",
"vendor",
"vendors",
"venture_capital",
"worker_association",
"works_council"
]
},
"guardian_tier": {
"type": "string",
"enum": [
"macro_regulator",
"meso_community",
"micro_street"
],
"description": "Guardian role classification, not an adverse score setting. Only guardian evidence activates guardian-specific analysis; stance, observed substance and actual veto authority determine applicable gates. A tier change need not change the verdict."
},
"evidence_origin": {
"type": "string",
"enum": [
"public_osint",
"field_research",
"mixed",
"corporate_telemetry",
"platform_telemetry"
],
"description": "Explicit public documentary survey tables do not require caller fieldwork metadata or become direct field coverage. Contradictory explicit field origins still require reconciliation."
},
"collection_method": {
"type": "string",
"enum": [
"structured_interview_protocol",
"expert_ethnographic_observation",
"field_observation",
"survey_platform_verified",
"survey_paper_based",
"key_informant_interview",
"team_consensus_estimate",
"founder_intuition",
"inferred_from_secondary",
"direct",
"inferred",
"secondary_source",
"corporate_telemetry",
"database_aggregation",
"expert_opinion",
"intercept_interview"
]
},
"source_confidence": {
"type": "string",
"enum": [
"high",
"medium",
"low"
]
},
"stance": {
"type": "string",
"enum": [
"hostile",
"neutral",
"friendly",
"opposed"
],
"description": "Declared stakeholder stance. Opposed or hostile load-bearing evidence requires stakeholder review even when linked as direct_support. This does not rewrite the factual claim relationship or authenticate the source."
},
"verification_status": {
"type": "string",
"enum": [
"unverified",
"self_reported",
"document_supported",
"independently_verified",
"verified",
"disputed"
],
"description": "Caller declaration, not independent verification. No confidence boost from this label. Disputed evidence blocks authorization until reconciled or segregated."
},
"freshness_date": {
"type": "string",
"format": "date"
},
"evidence_geography": {
"type": "object",
"properties": {
"country": {
"type": "string",
"enum": [
"AD",
"AE",
"AF",
"AG",
"AI",
"AL",
"AM",
"AO",
"AQ",
"AR",
"AS",
"AT",
"AU",
"AW",
"AX",
"AZ",
"BA",
"BB",
"BD",
"BE",
"BF",
"BG",
"BH",
"BI",
"BJ",
"BL",
"BM",
"BN",
"BO",
"BQ",
"BR",
"BS",
"BT",
"BV",
"BW",
"BY",
"BZ",
"CA",
"CC",
"CD",
"CF",
"CG",
"CH",
"CI",
"CK",
"CL",
"CM",
"CN",
"CO",
"CR",
"CU",
"CV",
"CW",
"CX",
"CY",
"CZ",
"DE",
"DJ",
"DK",
"DM",
"DO",
"DZ",
"EC",
"EE",
"EG",
"EH",
"ER",
"ES",
"ET",
"FI",
"FJ",
"FK",
"FM",
"FO",
"FR",
"GA",
"GB",
"GD",
"GE",
"GF",
"GG",
"GH",
"GI",
"GL",
"GM",
"GN",
"GP",
"GQ",
"GR",
"GS",
"GT",
"GU",
"GW",
"GY",
"HK",
"HM",
"HN",
"HR",
"HT",
"HU",
"ID",
"IE",
"IL",
"IM",
"IN",
"IO",
"IQ",
"IR",
"IS",
"IT",
"JE",
"JM",
"JO",
"JP",
"KE",
"KG",
"KH",
"KI",
"KM",
"KN",
"KP",
"KR",
"KW",
"KY",
"KZ",
"LA",
"LB",
"LC",
"LI",
"LK",
"LR",
"LS",
"LT",
"LU",
"LV",
"LY",
"MA",
"MC",
"MD",
"ME",
"MF",
"MG",
"MH",
"MK",
"ML",
"MM",
"MN",
"MO",
"MP",
"MQ",
"MR",
"MS",
"MT",
"MU",
"MV",
"MW",
"MX",
"MY",
"MZ",
"NA",
"NC",
"NE",
"NF",
"NG",
"NI",
"NL",
"NO",
"NP",
"NR",
"NU",
"NZ",
"OM",
"PA",
"PE",
"PF",
"PG",
"PH",
"PK",
"PL",
"PM",
"PN",
"PR",
"PS",
"PT",
"PW",
"PY",
"QA",
"RE",
"RO",
"RS",
"RU",
"RW",
"SA",
"SB",
"SC",
"SD",
"SE",
"SG",
"SH",
"SI",
"SJ",
"SK",
"SL",
"SM",
"SN",
"SO",
"SR",
"SS",
"ST",
"SV",
"SX",
"SY",
"SZ",
"TC",
"TD",
"TF",
"TG",
"TH",
"TJ",
"TK",
"TL",
"TM",
"TN",
"TO",
"TR",
"TT",
"TV",
"TW",
"TZ",
"UA",
"UG",
"UM",
"US",
"UY",
"UZ",
"VA",
"VC",
"VE",
"VG",
"VI",
"VN",
"VU",
"WF",
"WS",
"YE",
"YT",
"ZA",
"ZM",
"ZW"
]
},
"region": {
"type": "string"
},
"city": {
"type": "string"
},
"district": {
"type": "string",
"pattern": "\\S"
},
"districts": {
"type": "array",
"items": {
"type": "string",
"pattern": "\\S"
}
},
"town_or_zone": {
"type": "string"
}
},
"description": "Use a supported ISO country code, not a country name. Explicit districts declare source coverage, not authenticity or representativeness. Do not relabel geography to match the decision."
},
"geography": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"district": {
"type": "string",
"pattern": "\\S"
},
"districts": {
"type": "array",
"items": {
"type": "string",
"pattern": "\\S"
}
}
},
"additionalProperties": true
}
]
},
"temporal": {
"type": "object",
"properties": {
"freshness_date": {
"type": "string",
"description": "ISO calendar date for the collection/freshness alias. Must satisfy the same runtime date checks as freshness_date."
},
"expired": {
"type": "boolean",
"description": "Literal true requires review for decision-relevant evidence, regardless of a recent source date."
}
}
},
"public_metric_scope": {
"type": "string",
"enum": [
"entity_scale",
"country_scale",
"regional_scale",
"city_scale",
"site_scale"
]
},
"public_metrics": {
"type": "object"
},
"structured_values": {
"type": "object",
"description": "Ingestible field-observed MVR dimension values. Canonical production scale is 0-100. Accepted core keys: permission, trust, belonging, embeddedness, reciprocity, cultural_fit, guardian_strength, continuity, channel_permission, infrastructural_intimacy, absence_sensitivity, narrative_looping, whispered_credibility, fractal_trust, cultural_calibration. Agent-safety note: if at least two valid core dimensions on the same evidence item are all between 0 and 1, the worker normalizes them from fractional 0-1 to 0-100 before scoring; production clients should still send 0-100 to avoid ambiguity. Do not submit derived concepts such as evidence_completeness, market_carry, local_legitimacy; submit the listed underlying dimensions instead.",
"additionalProperties": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"x-ingestible-dimensions": [
"permission",
"trust",
"belonging",
"embeddedness",
"reciprocity",
"cultural_fit",
"guardian_strength",
"continuity",
"channel_permission",
"infrastructural_intimacy",
"absence_sensitivity",
"narrative_looping",
"whispered_credibility",
"fractal_trust",
"cultural_calibration"
],
"x-derived-concepts": [
"evidence_completeness",
"market_carry",
"local_legitimacy"
],
"x-canonical-scale": "0-100",
"x-fraction-scale-normalization": "unambiguous 0-1 core-dimension rows are normalized to 0-100"
},
"structured_values_scale": {
"type": "string",
"description": "Optional hint for agents. Use '0-1 fraction' only when sending fractional structured_values; otherwise omit and send canonical 0-100 scores."
},
"behavioral_values": {
"type": "object",
"additionalProperties": false,
"properties": {
"30_day_active_retention_percent": {
"type": "number",
"minimum": 0,
"maximum": 100
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://artifacts.apis.io/africanmarketos-com/json-schema/africanmarketos-com-evidence-item-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/africanmarketos-com-evidence-item"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.