changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$defs": {
+ "IntegrationMarketSlug": {
+ "description": "Published English-name market slug returned by authorized discovery.",
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "IntegrationNotice": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "approaching_limit",
+ "limit_reached"
+ ]
+ },
+ "limit": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "message": {
+ "type": "string"
+ },
+ "nextCapacityAt": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/IntegrationTimestamp"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "period": {
+ "enum": [
+ "day",
+ "week",
+ "month"
+ ]
+ },
+ "remaining": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "used": {
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id",
+ "period",
+ "kind",
+ "message",
+ "used",
+ "limit",
+ "remaining",
+ "nextCapacityAt"
+ ],
+ "type": "object"
+ },
+ "IntegrationResult": {
+ "additionalProperties": false,
+ "description": "A selected completed result; confidence is the value recorded at prediction time, separate from aggregate performance.",
+ "properties": {
+ "closedAt": {
+ "$ref": "#/$defs/IntegrationTimestamp"
+ },
+ "direction": {
+ "enum": [
+ "up",
+ "down"
+ ]
+ },
+ "durationLabel": {
+ "anyOf": [
+ {
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "ar": {
+ "type": "string"
+ },
+ "en": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "en",
+ "ar"
+ ],
+ "type": "object"
+ }
+ ],
+ "description": "English label in API and MCP replies; the app hand-off file keeps both languages."
+ },
+ "id": {
+ "pattern": "^[a-f0-9]{24}$",
+ "type": "string"
+ },
+ "mfePercent": {
+ "description": "Recorded furthest favorable price movement in percentage points.",
+ "minimum": 0,
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "movePercent": {
+ "type": "number"
+ },
+ "outcome": {
+ "enum": [
+ "reached",
+ "not-reached"
+ ]
+ },
+ "predictionAt": {
+ "$ref": "#/$defs/IntegrationTimestamp"
+ },
+ "probabilityPercent": {
+ "description": "Rounded to two decimal places. Eligibility uses original confidence strictly above 80%; a qualifying value just above 80% can display as 80% after rounding.",
+ "maximum": 100,
+ "minimum": 80,
+ "type": "number"
+ },
+ "targetProgressPercent": {
+ "description": "Favorable move as a percentage of target distance; can exceed 100. Missing is null.",
+ "minimum": 0,
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "direction",
+ "predictionAt",
+ "closedAt",
+ "probabilityPercent",
+ "movePercent",
+ "outcome",
+ "durationLabel",
+ "mfePercent",
+ "targetProgressPercent"
+ ],
+ "type": "object"
+ },
+ "IntegrationResults": {
+ "additionalProperties": false,
+ "description": "Latest eligible completed result for every distinct original duration, across both directions, newest closure first. Previous 90 days; original duration strictly longer than 24 hours and recorded confidence strictly above 80%. Reached and missed targets both qualify. Selected results are not an aggregate success rate or full archive.",
+ "properties": {
+ "market": {
+ "$ref": "#/$defs/IntegrationMarketSlug"
+ },
+ "results": {
+ "items": {
+ "$ref": "#/$defs/IntegrationResult"
+ },
+ "type": "array"
+ },
+ "sourceAt": {
+ "$ref": "#/$defs/IntegrationTimestamp"
+ },
+ "url": {
+ "description": "The market's page on kunkafa.com.",
+ "format": "uri",
+ "pattern": "^https://kunkafa\\.com/markets/[a-z0-9-]+/$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "market",
+ "sourceAt",
+ "results"
+ ],
+ "type": "object"
+ },
+ "IntegrationTimestamp": {
+ "description": "ISO 8601 UTC timestamp supplied by Kunkafa.",
+ "format": "date-time",
+ "type": "string"
+ },
+ "IntegrationUsage": {
+ "additionalProperties": false,
+ "properties": {
+ "adjustment": {
+ "additionalProperties": false,
+ "description": "An owner-approved account allowance increase. A null expiration is permanent until changed. Usage is never reset; market access and credential eligibility still follow the current plan.",
+ "properties": {
+ "expiresAt": {
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "expiresAt"
+ ],
+ "type": "object"
+ },
+ "calculatedAt": {
+ "$ref": "#/$defs/IntegrationTimestamp"
+ },
+ "concurrency": {
+ "additionalProperties": false,
+ "description": "Private requests that can run at the same time. Requests from one connection run side by side up to this limit (the plan burst); a request from another connection waits until they finish.",
+ "properties": {
+ "limit": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "nextRequestAt": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/IntegrationTimestamp"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "remaining": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "limit",
+ "remaining",
+ "nextRequestAt"
+ ],
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Steady request rate with bounded burst capacity; metadata and repeated summaries still count toward request protection.",
+ "properties": {
+ "burst": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "nextRequestAt": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/IntegrationTimestamp"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "perMinute": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "remaining": {
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "perMinute",
+ "burst",
+ "remaining",
+ "nextRequestAt"
+ ],
+ "type": "object"
+ },
+ "tier": {
+ "enum": [
+ "free",
+ "starter",
+ "core",
+ "pro",
+ "publisher"
+ ]
+ },
+ "windows": {
+ "items": {
+ "$ref": "#/$defs/IntegrationWindowUsage"
+ },
+ "maxItems": 3,
+ "minItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "calculatedAt",
+ "tier",
+ "requests",
+ "concurrency",
+ "windows"
+ ],
+ "type": "object"
+ },
+ "IntegrationWindowUsage": {
+ "additionalProperties": false,
+ "description": "Rolling 24-hour, 7-day or 30-day allowance, not a midnight reset. Used can exceed the current limit after a downgrade; remaining is never negative.",
+ "properties": {
+ "limit": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "nextCapacityAt": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/IntegrationTimestamp"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "notice": {
+ "enum": [
+ "approaching_limit",
+ "limit_reached",
+ null
+ ]
+ },
+ "noticeId": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "period": {
+ "enum": [
+ "day",
+ "week",
+ "month"
+ ]
+ },
+ "remaining": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "used": {
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "period",
+ "used",
+ "limit",
+ "remaining",
+ "nextCapacityAt",
+ "notice",
+ "noticeId"
+ ],
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "properties": {
+ "data": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/IntegrationResults"
+ },
+ {
+ "required": [
+ "url"
+ ]
+ }
+ ]
+ },
+ "dataUse": {
+ "description": "Use restriction on every reply: data collection is prohibited; the data may not be collected, saved, stored, exported or compiled, or used to train, retrain, fine-tune or distil any model.",
+ "type": "string"
+ },
+ "fieldGuide": {
+ "additionalProperties": false,
+ "description": "Plain meanings of the returned fields.",
+ "properties": {
+ "mfePercent": {
+ "type": "string"
+ },
+ "movePercent": {
+ "type": "string"
+ },
+ "outcome": {
+ "type": "string"
+ },
+ "probabilityPercent": {
+ "type": "string"
+ },
+ "results": {
+ "type": "string"
+ },
+ "targetProgressPercent": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "results",
+ "probabilityPercent",
+ "movePercent",
+ "outcome",
+ "mfePercent",
+ "targetProgressPercent"
+ ],
+ "type": "object"
+ },
+ "notices": {
+ "items": {
+ "$ref": "#/$defs/IntegrationNotice"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "usage": {
+ "$ref": "#/$defs/IntegrationUsage"
+ }
+ },
+ "required": [
+ "data",
+ "usage",
+ "notices",
+ "dataUse",
+ "fieldGuide"
+ ],
+ "type": "object"
+}