mcp-tool-catalog.json

OT Flash r56 · Online reference / 在线参考

{
	"product":"OT Flash",
	"release":"r56",
	"webServerRevision":"f4985dba92972847c1ff7f1b028dc5289140c6c6",
	"catalogKind":"offline-declared-schema-reference-with-optional-features",
	"notice":"Not an authenticated tools/list response. Optional tools, action profiles, scopes and artifact types require instance feature flags and current permissions. No runtime operation was executed.",
	"protocolVersions":[
		"2026-07-28",
		"2025-11-25",
		"2025-06-18",
		"2025-03-26"
	],
	"ontologyEndpoint":"/mcp",
	"tools":[
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"names":{
						"maxItems":32,
						"type":"array",
						"items":{
							"type":"string"
						}
					},
					"action":{
						"type":"string",
						"enum":[
							"list",
							"read",
							"keywords",
							"functions",
							"etl_requests"
						]
					},
					"locale":{
						"description":"Exact static catalog locale; omitted means English reference, not a query default.",
						"type":"string"
					},
					"uri":{
						"type":"string",
						"enum":[
							"datafocus://manuals/etl-formulas/v1",
							"datafocus://manuals/search-keyword-queries/v1",
							"datafocus://manuals/etl-functions/v1",
							"datafocus://manuals/search-keywords/v1"
						]
					}
				}
			},
			"name":"dfc_manual",
			"description":"Read the ETL formula or Search keyword agent manual before using the corresponding tools. Read full manuals by URI or look up up to 32 function names/keyword IDs in one locale. etl_requests returns original ETL action DTO fields (names selects actions); nested plugin configuration still requires current plugins/processor_read. Static declarations do not prove backend execution. Resource URIs: datafocus://manuals/etl-formulas/v1, datafocus://manuals/search-keyword-queries/v1",
			"annotations":{
				"idempotentHint":true,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"data":{
						"description":"Action-specific original business payload; see the manual and capabilities.",
						"type":"object"
					},
					"action":{
						"type":"string",
						"enum":[
							"capabilities",
							"model_create",
							"model_read",
							"open",
							"request",
							"poll",
							"cancel",
							"close"
						]
					}
				},
				"required":[
					"action"
				]
			},
			"name":"dfc_search",
			"description":"Original Search keyword operations, including query models, native sessions, formulas and disambiguation. First read datafocus://manuals/search-keyword-queries/v1. capabilities lists actions/commands. model_create data={tableIds:[actual IDs]}; open data={sourceToken,language?}; request data={sessionId,message:{type,datas}}; poll data={sessionId,waitMillis:0..30000}; cancel/close data={sessionId}. Language omitted/empty follows the application system language, then server locale. Search acknowledgement is not completion; inspect original business frames. cancel closes only this owned session and does not confirm terminal cancellation.",
			"annotations":{
				"idempotentHint":false,
				"destructiveHint":true,
				"readOnlyHint":false
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"data":{
						"description":"Action-specific original business payload; see the manual and capabilities.",
						"type":"object"
					},
					"action":{
						"type":"string",
						"enum":[
							"capabilities"
						]
					}
				},
				"required":[
					"action"
				]
			},
			"name":"dfc_etl",
			"description":"OT Flash does not include ETL. capabilities returns available=false with ETL_NOT_INCLUDED_IN_OT_FLASH. No Heavy ETL endpoint or credentials are used. datafocus://manuals/etl-formulas/v1 is static cross-product reference only.",
			"annotations":{
				"idempotentHint":true,
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"pageSize":{
						"description":"Items per page.",
						"maximum":100,
						"type":"integer",
						"minimum":1
					},
					"page":{
						"description":"Page number.",
						"type":"integer",
						"minimum":1
					}
				}
			},
			"name":"dfc_ontologies",
			"description":"List only the ontologies selected in this OAuth grant. Results are paginated.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_ontologies",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"resourceTypes":{
						"description":"Optional: tables, answers, pinboards, documents, knowledgeBindings.",
						"type":"array",
						"items":{
							"type":"string"
						}
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"pageSize":{
						"description":"Items per resource type.",
						"maximum":100,
						"type":"integer",
						"minimum":1
					},
					"page":{
						"description":"Page number applied to each resource type.",
						"type":"integer",
						"minimum":1
					}
				},
				"required":[
					"ontologyId"
				]
			},
			"name":"dfc_ontology_resources",
			"description":"Get a compact paginated summary of tables, documents, answers, dashboards and knowledge bindings in one allowed ontology. Resource IDs keep their declared type: a document ID is metadata only and is not a knowledge-base ID or document asset ID.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_ontology_resources",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"relationTypes":{
						"description":"Optional relation type filter.",
						"type":"array",
						"items":{
							"type":"string"
						}
					},
					"depth":{
						"description":"Neighbor depth; default 1.",
						"maximum":3,
						"type":"integer",
						"minimum":1
					},
					"sourceTypes":{
						"description":"Optional source type filter.",
						"type":"array",
						"items":{
							"type":"string"
						}
					},
					"query":{
						"description":"For candidate_query use ontology-candidate-table-query-v1, workspaceId, workspaceRevision (string), candidateHash, objectTypeLocalRef, bindingLocalRef, scopeRef, select local refs and optional filter (propertyLocalRef), unknowns and limit. For a workspace with frozen published references use ontology-candidate-table-query-v2 with objectTypeRef, bindingRef and select typed LOCAL(clientLocalRef) or PERSISTED(rid, revisionId) refs and optional filter.propertyRef; only exact prepared selections are readable. For published_model use ontology-published-table-model-describe-v1 with only releaseId to obtain query templates; use ontology-published-table-model-describe-v2 to additionally obtain exactReferences (PERSISTED rid/revisionId) and fixed releaseSelections for mixed candidate creation. Use ontology-published-table-model-describe-v3 for dependencyReferences, exact domainRef and compact bindingSpecTemplate; choose only the transitive dependencies of candidate roots from releaseSelections. Templates must undergo current source/schema checks. These are metadata, not read or publication grants. Do not invent RIDs or revisions. For published_query use ontology-published-table-query-v1 with releaseId, objectTypeRid, bindingRid, scopeRef, select property RIDs, optional typed filter, unknowns REPORT/REJECT and bounded limit. Never submit SQL or source/table IDs.",
						"type":"object"
					},
					"limit":{
						"description":"Maximum results; default 20.",
						"maximum":100,
						"type":"integer",
						"minimum":1
					},
					"action":{
						"type":"string",
						"enum":[
							"search",
							"neighbors",
							"published_model",
							"published_query",
							"candidate_query"
						]
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"nodeKey":{
						"description":"Node key returned by search; required for neighbors.",
						"type":"string"
					},
					"keyword":{
						"description":"Short search term; required for search.",
						"type":"string"
					},
					"nodeTypes":{
						"description":"Optional node type filter.",
						"type":"array",
						"items":{
							"type":"string"
						}
					}
				},
				"required":[
					"action",
					"ontologyId"
				]
			},
			"name":"dfc_ontology_graph",
			"description":"Locate assets with search/neighbors (GRAPH_READ; not factual evidence). candidate_query requires TABLE_QUERY and AUTHORING_ARTIFACT_READ for an owned workspace; v2 additionally rechecks frozen exact published selections and current source READ; results are unpublished and provisional, never a knowledge decision. published_model requires TABLE_QUERY and returns source-authorized query templates for an exact committed release; metadata is not citation evidence. published_query requires TABLE_QUERY and executes a fixed published TABLE Binding through current source authorization, not graph facts. Search/neighbors return bound routeLocators only for canonical query routing.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_ontology_graph",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"routeLocators":{
						"maxItems":20,
						"description":"Optional complete typed routeLocator objects returned by dfc_ontology_graph. Omit for broad bound-knowledge retrieval.",
						"type":"array",
						"items":{
							"additionalProperties":false,
							"type":"object",
							"properties":{
								"routeLocatorId":{
									"pattern":"^grt_[0-9a-f]{64}$",
									"description":"Exact route locator ID returned by the current dfc_ontology_graph result.",
									"type":"string"
								},
								"schemaVersion":{
									"type":"string",
									"enum":[
										"ontology-bound-route-locator-v1"
									]
								},
								"knowledgeIds":{
									"minItems":1,
									"maxItems":20,
									"description":"Active bound knowledge IDs stamped by the server.",
									"type":"array",
									"items":{
										"pattern":"^[1-9][0-9]*$",
										"type":"string"
									}
								},
								"assetId":{
									"pattern":"^[1-9][0-9]*$",
									"description":"Asset ID copied as part of the complete route locator object.",
									"type":"string"
								},
								"routable":{
									"type":"boolean"
								},
								"locatorType":{
									"type":"string",
									"enum":[
										"bound_document_asset"
									]
								},
								"projectionVersion":{
									"pattern":"^[1-9][0-9]*$",
									"description":"Graph projection version that issued this route.",
									"type":"string"
								},
								"routeProof":{
									"pattern":"^[A-Za-z0-9_-]{43}$",
									"description":"Opaque server proof bound to the current OAuth access token.",
									"type":"string"
								},
								"canonicalEvidence":{
									"type":"boolean"
								},
								"ontologyId":{
									"pattern":"^[1-9][0-9]*$",
									"description":"Ontology ID copied from the returned route locator.",
									"type":"string"
								},
								"projectionRootSha256":{
									"pattern":"^[0-9a-fA-F]{64}$",
									"description":"Graph projection root that issued this route.",
									"type":"string"
								},
								"routeProofVersion":{
									"type":"string",
									"enum":[
										"ontology-route-proof-v1"
									]
								}
							},
							"required":[
								"schemaVersion",
								"locatorType",
								"routeLocatorId",
								"ontologyId",
								"assetId",
								"knowledgeIds",
								"projectionVersion",
								"projectionRootSha256",
								"routeProofVersion",
								"routeProof",
								"routable",
								"canonicalEvidence"
							]
						}
					},
					"topK":{
						"description":"Canonical evidence count; default 8.",
						"maximum":20,
						"type":"integer",
						"minimum":1
					},
					"queryMode":{
						"type":"string",
						"enum":[
							"vector",
							"hybrid",
							"graph"
						]
					},
					"fanoutPlan":{
						"additionalProperties":false,
						"type":"object",
						"properties":{
							"schemaVersion":{
								"type":"string",
								"enum":[
									"ontology-fanout-plan-v1"
								]
							},
							"expectedItemCount":{
								"description":"Optional total expected item count.",
								"maximum":100,
								"type":"integer",
								"minimum":1
							},
							"branches":{
								"minItems":1,
								"maxItems":12,
								"type":"array",
								"items":{
									"additionalProperties":false,
									"type":"object",
									"properties":{
										"branchId":{
											"description":"Unique stable branch ID; defaults to branch index.",
											"type":"string"
										},
										"query":{
											"description":"Independent search question for this branch.",
											"type":"string"
										},
										"label":{
											"description":"Short human-readable evidence requirement.",
											"type":"string"
										},
										"expectedItems":{
											"description":"Optional expected item count.",
											"maximum":50,
											"type":"integer",
											"minimum":1
										}
									},
									"required":[
										"query"
									]
								}
							}
						},
						"required":[
							"branches"
						]
					},
					"structuredPlan":{
						"additionalProperties":false,
						"type":"object",
						"properties":{
							"operands":{
								"minItems":2,
								"maxItems":2,
								"description":"For difference/ratio_rate only: exact temporally bound scalar operands from recovered evidence.",
								"type":"array",
								"items":{
									"additionalProperties":false,
									"type":"object",
									"properties":{
										"role":{
											"type":"string",
											"enum":[
												"initial_value",
												"final_value",
												"numerator",
												"denominator"
											]
										},
										"column":{
											"description":"Exact canonical numeric column header.",
											"type":"string"
										},
										"filters":{
											"minItems":1,
											"maxItems":12,
											"type":"array",
											"items":{
												"additionalProperties":false,
												"type":"object",
												"properties":{
													"op":{
														"type":"string",
														"enum":[
															"eq",
															"gt",
															"gte",
															"lt",
															"lte"
														]
													},
													"column":{
														"description":"Exact canonical column header from recoveredTableSchemas.",
														"type":"string"
													},
													"value":{
														"type":[
															"string",
															"number"
														]
													}
												},
												"required":[
													"column",
													"op",
													"value"
												]
											}
										},
										"tableIndex":{
											"description":"Exact tableIndex from recoveredTableSchemas.",
											"maximum":49,
											"type":"integer",
											"minimum":0
										}
									},
									"required":[
										"role",
										"tableIndex",
										"column",
										"filters"
									]
								}
							},
							"allowDimensionless":{
								"type":"boolean"
							},
							"column":{
								"description":"Exact canonical value-column header; omit only for aggregate_count.",
								"type":"string"
							},
							"filters":{
								"maxItems":12,
								"type":"array",
								"items":{"$ref":"$.tools[6].inputSchema.properties.structuredPlan.properties.operands.items.properties.filters.items"}
							},
							"executionContractSha256":{
								"pattern":"^[0-9a-fA-F]{64}$",
								"description":"Exact executionContractSha256 returned by the matching evidence response.",
								"type":"string"
							},
							"operator":{
								"type":"string",
								"enum":[
									"aggregate_max",
									"aggregate_min",
									"aggregate_sum",
									"aggregate_average",
									"aggregate_count",
									"difference",
									"ratio_rate"
								]
							},
							"tableIndex":{
								"description":"Exact tableIndex from recoveredTableSchemas.",
								"maximum":49,
								"type":"integer",
								"minimum":0
							}
						},
						"required":[
							"executionContractSha256",
							"operator"
						]
					},
					"knowledgeIds":{
						"description":"Optional bound knowledge-base IDs from knowledgeBindings; omit to search every active binding.",
						"type":"array",
						"items":{
							"type":[
								"string",
								"integer"
							]
						}
					},
					"query":{
						"description":"Complete user question.",
						"type":"string"
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					}
				},
				"required":[
					"ontologyId",
					"query"
				]
			},
			"name":"dfc_ontology_query",
			"description":"ACL-checked document-evidence retrieval with optional graph routing and bounded requirement recovery. Graph data remains locator-only. Factual content comes only from answerContextItems whose contentComplete and canonicalFactEligible are true and whose contentSha256 binds the complete content; incomplete or budget-omitted items remain locators, not facts. A response that offers ANSWER_OR_VERIFY_EXECUTION and exposes recoveredTableSchemas may be replayed with an optional bounded structuredPlan using its exact executionContractSha256, tableIndex and column values. Submitting a plan invokes strict deterministic verification; a changed evidence/table identity rejects that plan without turning otherwise complete canonical evidence into a failure. Aggregate plans use tableIndex/column/filters and run only over a complete, untruncated Markdown table; normal imported tables must use dfc_table SQL instead. Difference and ratio_rate plans use exactly two role-bound operands, each with tableIndex/column/filters. Query IR arithmetic and temporal matches are non-terminal suggestions; verified plan bindings, never model-authored code, authorize deterministic execution. The server re-retrieves and provenance-binds every row before execution; this is not SQL and contains no executable text.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_ontology_query",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"topK":{
						"description":"Evidence count; default 8.",
						"maximum":20,
						"type":"integer",
						"minimum":1
					},
					"minScore":{
						"maximum":1,
						"description":"Optional similarity threshold.",
						"type":"number",
						"minimum":0
					},
					"knowledgeIds":{
						"description":"Optional bound knowledge-base IDs from knowledgeBindings; omit to search every active binding. Never pass document resource IDs.",
						"type":"array",
						"items":{
							"type":[
								"string",
								"integer"
							]
						}
					},
					"query":{
						"description":"Question or search phrase.",
						"type":"string"
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"assetIds":{
						"description":"Optional document asset IDs copied from already ACL-validated canonical evidence locators; maximum 20. Never pass graph source IDs or document resource IDs.",
						"type":"array",
						"items":{
							"type":[
								"string",
								"integer"
							]
						}
					},
					"retrievalStrategy":{
						"type":"string",
						"enum":[
							"auto",
							"hybrid_stage2"
						]
					}
				},
				"required":[
					"ontologyId",
					"query"
				]
			},
			"name":"dfc_knowledge_search",
			"description":"Search ACL-checked locator-only previews in knowledge bases bound to one allowed ontology. Search previews navigate to evidence but are not factual or citation evidence; resolve a selected locator with dfc_knowledge_detail action=chunk to read the complete ACL-checked canonical chunk. Use it when direct evidence discovery or a distinct unresolved evidence need benefits from an explicit query; avoid exact duplicate or no-progress searches. Usually omit knowledgeIds so all active bindings are searched. Only knowledgeId values returned under knowledgeBindings are valid knowledgeIds; document resource IDs are never valid here.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_knowledge_search",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"qdrantId":{
						"description":"Evidence qdrantId.",
						"type":[
							"string",
							"integer"
						]
					},
					"pageNo":{
						"description":"Page number.",
						"type":"integer"
					},
					"evidenceId":{
						"description":"Canonical evidenceId copied unchanged from one query result.",
						"type":"string"
					},
					"action":{
						"type":"string",
						"enum":[
							"chunk",
							"document",
							"page_context"
						]
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"documentId":{
						"description":"Evidence documentId or assetId.",
						"type":[
							"string",
							"integer"
						]
					},
					"radius":{
						"description":"Adjacent page radius; default 1.",
						"maximum":3,
						"type":"integer",
						"minimum":0
					},
					"chunkId":{
						"description":"Evidence chunkId.",
						"type":"string"
					}
				},
				"required":[
					"action",
					"ontologyId"
				]
			},
			"name":"dfc_knowledge_detail",
			"description":"Read a chunk, document metadata, or bounded page context using one locator returned by dfc_ontology_query or dfc_knowledge_search. Only action=chunk returns the complete ACL-checked canonical chunk that may support document facts and citations; search previews, document metadata and page-navigation context are not substitutes. Prefer copying its evidenceId exactly. Otherwise copy chunkId and documentId from the same locator; never invent or combine locator fields.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_knowledge_detail",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"maxRows":{
						"description":"Maximum returned rows; default 100.",
						"maximum":200,
						"type":"integer",
						"minimum":1
					},
					"action":{
						"type":"string",
						"enum":[
							"detail",
							"query"
						]
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"id":{
						"description":"Exact decimal-string id from ontology resources, supplied ontology context, or a verified graph locator; required for detail. Copy id without numeric rounding. Do not use physicalName or the display table name.",
						"type":"string"
					},
					"sql":{
						"description":"Any single ontology-bounded read-only Doris query; required for query. List output columns explicitly; SELECT * and table.* are rejected before execution. Use explicit JOIN ... ON; JOIN USING and NATURAL JOIN are rejected. Use authoritative sqlDataType from available current ontology schema metadata, and call detail only when that metadata is absent or insufficient. DATE uses CAST('YYYY-MM-DD' AS DATE)/CURRENT_DATE; DATETIME uses CAST('YYYY-MM-DD HH:MM:SS' AS DATETIME)/CURRENT_TIMESTAMP. Relative expressions use DATE_SUB(CURRENT_DATE, INTERVAL N YEAR). YEAR(date_or_timestamp_column) AS unique_alias and DATE_TRUNC(date_or_timestamp_column, 'year'|'quarter'|'month'|'week'|'day') AS unique_alias are recommended for deterministic temporal semantic verification, not an execution allowlist. Other valid read-only Doris expressions may execute with query-derived, partially verified semantics. Follow the Doris queryContract for timezone handling. SQLite DATE('now', ...) is invalid.",
						"type":"string"
					}
				},
				"required":[
					"action",
					"ontologyId"
				]
			},
			"name":"dfc_table",
			"description":"Preferred path for normal imported structured tables. The detail id must be the exact decimal-string resource id copied from ontology resources, supplied ontology context, or a verified graph locator. physicalName is storage metadata, never a detail id or a submitted SQL table identifier. SQL must use the exact display table name from resources name/detail tblDisplayName and column colDisplayName. If the id is unknown, fetch dfc_ontology_resources rather than guessing it. Use detail only when the currently authorized schema metadata is missing or insufficient; otherwise execute any single ontology-bounded read-only Doris query when the OAuth grant includes ontology.table:query. Use exact display identifiers with double quotes and list output columns explicitly; SELECT * and table.* fail closed so unregistered physical columns cannot bypass column authorization. Use explicit JOIN ... ON; JOIN USING and NATURAL JOIN fail closed because implicit join keys cannot be dependency-authorized safely. For temporal expressions, follow the authoritative Doris queryContract returned by detail; DATE uses CURRENT_DATE and DATETIME uses CURRENT_TIMESTAMP. YEAR(column) and DATE_TRUNC(column, 'year'|'quarter'|'month'|'week'|'day'), each with a unique alias, are recommended temporal patterns whose source semantics can be deterministically verified; they are not an execution allowlist. Other valid read-only expressions such as CASE, COUNT(DISTINCT ...), and multi-column arithmetic may execute and return citation-eligible rows while semantic binding remains partial; consume those rows as returned and do not treat their unverified lineage as authority for a second deterministic calculation. Apply aggregation and ranking in SQL before the row limit. If rows are truncated, run bounded follow-up queries to complete the requested result; do not derive group rankings from an incomplete row set. In v8 evidenceRows is the only agent-facing row channel; raw data is omitted. Every SQL number is recursively encoded as an exact decimal JSON string for stable receipts. Interpret those wire strings through resultColumnContracts; rowValueWireEncoding is transport metadata and does not make them VARCHAR values. Use document-table recovery only when the source is irregular and unavailable here.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_table",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"question":{
						"description":"Natural-language data question.",
						"type":"string"
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"language":{
						"description":"Optional response language.",
						"type":"string"
					},
					"sessionId":{
						"description":"Optional sessionId returned by a previous analysis call.",
						"type":"string"
					}
				},
				"required":[
					"ontologyId",
					"question"
				]
			},
			"name":"dfc_analysis_ask",
			"description":"Ask a natural-language question over structured tables, canonical document evidence, or both in one allowed ontology. Structured execution is Search-authoritative with current row policies; document citations are re-materialized under current ACL.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_analysis_ask",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"anyOf":[
					{
						"required":[
							"question"
						]
					},
					{
						"required":[
							"change"
						]
					}
				],
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"branchId":{
						"description":"Optional server-issued structured branch locator; required for filter_patch.",
						"type":"string"
					},
					"resultId":{
						"description":"Latest complete base result locator.",
						"type":"string"
					},
					"question":{
						"description":"Legacy natural-language follow-up.",
						"type":"string"
					},
					"idempotencyKey":{
						"description":"Caller-stable key, 8-128 safe characters.",
						"type":"string"
					},
					"change":{
						"additionalProperties":false,
						"type":"object",
						"properties":{
							"valueRef":{
								"description":"Server-issued opaque value reference for filter_patch.",
								"type":"string"
							},
							"input":{
								"description":"Natural-language follow-up when type is natural_language.",
								"type":"string"
							},
							"fieldRef":{
								"description":"Server-issued opaque field reference for filter_patch.",
								"type":"string"
							},
							"type":{
								"type":"string",
								"enum":[
									"natural_language",
									"filter_patch"
								]
							},
							"operator":{
								"type":"string",
								"enum":[
									"EQ"
								]
							}
						},
						"required":[
							"type"
						]
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"language":{
						"description":"Optional response language.",
						"type":"string"
					},
					"sessionId":{
						"description":"Analysis session locator.",
						"type":"string"
					},
					"expectedRevision":{
						"description":"Base result revision precondition.",
						"type":"integer",
						"minimum":1
					},
					"visualId":{
						"description":"Optional server-issued visual locator bound to branchId.",
						"type":"string"
					}
				},
				"required":[
					"ontologyId",
					"sessionId",
					"resultId",
					"expectedRevision",
					"idempotencyKey"
				]
			},
			"name":"dfc_analysis_refine",
			"description":"Refine the latest complete result using a natural-language change or a server-issued typed filter patch. Typed refs never expose or accept raw SQL, Search instructions, filters, table IDs, or column IDs. Replays require the same base revision and idempotency key.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_analysis_refine",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"branchId":{
						"description":"Server-issued structured branch locator.",
						"type":"string"
					},
					"resultId":{
						"description":"Terminal analysis result locator.",
						"type":"string"
					},
					"pageNo":{
						"description":"One-based page number.",
						"maximum":10000,
						"type":"integer",
						"minimum":1
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"pageSize":{
						"description":"Bounded page size.",
						"maximum":100,
						"type":"integer",
						"minimum":1
					},
					"sessionId":{
						"description":"Analysis session locator.",
						"type":"string"
					},
					"expectedRevision":{
						"description":"Current result revision precondition.",
						"type":"integer",
						"minimum":1
					}
				},
				"required":[
					"ontologyId",
					"sessionId",
					"resultId",
					"branchId",
					"expectedRevision",
					"pageNo",
					"pageSize"
				]
			},
			"name":"dfc_analysis_page",
			"description":"Execute one bounded page for a server-signed structured branch. The stored Search recipe is re-authorized with current row policies; clients cannot provide SQL, instructions, filters, table IDs, or column IDs.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_analysis_page",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"resultId":{
						"description":"Analysis result locator.",
						"type":"string"
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"sessionId":{
						"description":"Analysis session locator.",
						"type":"string"
					}
				},
				"required":[
					"ontologyId",
					"sessionId",
					"resultId"
				]
			},
			"name":"dfc_analysis_result_get",
			"description":"Read a previously returned analysis result using grant-bound opaque locators.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_analysis_result_get",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"resultId":{
						"description":"Analysis result locator.",
						"type":"string"
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"sessionId":{
						"description":"Analysis session locator.",
						"type":"string"
					}
				},
				"required":[
					"ontologyId",
					"sessionId",
					"resultId"
				]
			},
			"name":"dfc_analysis_cancel",
			"description":"Cancel a working analysis result using grant-bound opaque locators.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_analysis_cancel",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"sessionId":{
						"description":"Analysis session locator.",
						"type":"string"
					}
				},
				"required":[
					"ontologyId",
					"sessionId"
				]
			},
			"name":"dfc_analysis_close",
			"description":"Close a non-working analysis session and release any private Search context.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_analysis_close",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"goal":{
						"description":"Analysis goal.",
						"type":"string"
					},
					"idempotencyKey":{
						"description":"Caller-stable key, 8-128 safe characters.",
						"type":"string"
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					},
					"language":{
						"description":"Optional response language.",
						"type":"string"
					},
					"title":{
						"description":"Optional report title.",
						"type":"string"
					}
				},
				"required":[
					"ontologyId",
					"goal",
					"idempotencyKey"
				]
			},
			"name":"dfc_report_create",
			"description":"Create a durable, ontology-bound visual analysis report. Structured execution uses the current user's Search row policies. The call returns a grant-bound reportId for polling.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_report_create",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"reportId":{
						"description":"Opaque reportId returned by dfc_report_create.",
						"type":"string"
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					}
				},
				"required":[
					"ontologyId",
					"reportId"
				]
			},
			"name":"dfc_report_status",
			"description":"Poll a durable visual analysis report using its grant-bound opaque reportId. Current OAuth grant, ontology, origin, and live table authorization are rechecked on every read.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_report_status",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"reportId":{
						"description":"Opaque reportId returned by dfc_report_create.",
						"type":"string"
					},
					"ontologyId":{
						"description":"Allowed ontology ID.",
						"type":"string"
					}
				},
				"required":[
					"ontologyId",
					"reportId"
				]
			},
			"name":"dfc_report_cancel",
			"description":"Cancel an unfinished durable visual analysis report. The live worker lease is revoked and current OAuth grant, ontology, origin, and table authorization are rechecked.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfc_report_cancel",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"mode":{
						"type":"string",
						"enum":[
							"QUERY",
							"AUTHORING"
						]
					},
					"instruction":{
						"type":"string",
						"maxLength":16000
					},
					"idempotencyKey":{
						"type":"string",
						"maxLength":128
					},
					"action":{
						"type":"string",
						"enum":[
							"start",
							"status",
							"cancel"
						]
					},
					"ontologyId":{
						"type":"string"
					},
					"runId":{
						"type":"string"
					},
					"contractVersion":{
						"type":"string",
						"enum":[
							"ontology-agent-task-v1"
						]
					}
				},
				"required":[
					"contractVersion",
					"action",
					"ontologyId"
				]
			},
			"name":"dfc_ontology_agent",
			"description":"Start or read a durable task on the original OAuth grant. QUERY uses read tools; AUTHORING requires existing MODEL_AUTHOR and authoring scopes. Publication retains original MODEL_PUBLISH/AUTO and policy checks. Same key/instruction recovers the same run without resubmission. Run completion is not a publication receipt; use original artifact status and source-checked queries. Instructions here are AGENT-authored, not human policy confirmations."
		},
		{
			"name":"dfc_authoring_capabilities",
			"description":"List versioned DataFocus authoring contracts and actions allowed for this OAuth grant.",
			"inputSchema":{
				"type":"object",
				"properties":{},
				"required":[],
				"additionalProperties":false
			},
			"annotations":{
				"title":"dfc_authoring_capabilities",
				"readOnlyHint":true,
				"destructiveHint":false,
				"idempotentHint":true
			}
		},
		{
			"name":"dfc_artifact_context",
			"description":"Read a bounded, versioned authoring context and current artifact fingerprint. Generate the candidate locally, then call dfc_artifact_submit.",
			"inputSchema":{
				"type":"object",
				"properties":{
					"artifactType":{
						"type":"string",
						"enum":[
							"CONTROL_PANEL_SPEC",
							"VIEW_SPEC"
						]
					},
					"scopeType":{
						"type":"string",
						"description":"For ontology AutoML use ONTOLOGY and ontologyId; never combine projectId and ontologyId."
					},
					"ontologyId":{
						"type":"string",
						"description":"Ontology ID selected in this OAuth grant."
					},
					"projectId":{
						"type":"string",
						"description":"Project ID selected in this OAuth grant; required for VIEW_SPEC."
					},
					"artifactId":{
						"type":"string",
						"description":"Existing artifact ID for edit mode."
					},
					"instruction":{
						"type":"string",
						"description":"Authoring requirement; must be identical for context and submit."
					},
					"variables":{
						"type":"object"
					},
					"previewInput":{
						"type":"object"
					},
					"viewport":{
						"type":"object"
					}
				},
				"required":[
					"artifactType",
					"instruction"
				],
				"additionalProperties":false
			},
			"annotations":{
				"title":"dfc_artifact_context",
				"readOnlyHint":true,
				"destructiveHint":false,
				"idempotentHint":true
			}
		},
		{
			"name":"dfc_ontology_table_schema",
			"description":"Read the current v4 structured-table Binding fingerprint for selected source fields. Reuses the existing ontology/source/table/column ACL; PLAN rechecks it. For automatic type discovery send fields with sourceField only; the existing column ACL selects metadata before exact types are derived. For explicit declarations supply precision/scale for DECIMAL only, omit both for every other type. Returns read-only supported Binding references, not authority or enterprise policy. No rows are returned.",
			"inputSchema":{
				"type":"object",
				"properties":{
					"ontologyId":{
						"type":"string",
						"description":"Allowed ontology ID."
					},
					"sourceAssetRef":{
						"type":"string",
						"description":"Enrolled STRUCTURED_ASSET reference, e.g. table:123."
					},
					"fields":{
						"type":"array",
						"items":{
							"type":"object",
							"properties":{
								"sourceField":{
									"type":"string",
									"description":"Existing authorized source column name."
								},
								"baseType":{
									"type":"string",
									"enum":[
										"STRING",
										"BOOLEAN",
										"INTEGER",
										"DECIMAL",
										"DATE"
									]
								},
								"precision":{
									"type":"integer",
									"minimum":1,
									"maximum":38,
									"description":"DECIMAL only; exact source precision."
								},
								"scale":{
									"type":"integer",
									"minimum":0,
									"maximum":38,
									"description":"DECIMAL only; exact source scale, at most precision."
								}
							},
							"required":[
								"sourceField"
							],
							"additionalProperties":false,
							"if":{
								"properties":{
									"baseType":{
										"const":"DECIMAL"
									}
								},
								"required":[
									"baseType"
								]
							},
							"then":{
								"required":[
									"precision",
									"scale"
								]
							},
							"else":{
								"not":{
									"anyOf":[
										{
											"required":[
												"precision"
											]
										},
										{
											"required":[
												"scale"
											]
										}
									]
								}
							}
						},
						"minItems":1,
						"maxItems":64
					}
				},
				"required":[
					"ontologyId",
					"sourceAssetRef",
					"fields"
				],
				"additionalProperties":false
			},
			"annotations":{
				"title":"dfc_ontology_table_schema",
				"readOnlyHint":true,
				"destructiveHint":false,
				"idempotentHint":true
			}
		},
		{
			"name":"dfc_artifact_preview",
			"description":"Rerun deterministic validation and bounded preview for an unchanged external candidate. Live authorization and target state are rechecked.",
			"inputSchema":{
				"type":"object",
				"properties":{
					"proposalId":{
						"type":"string",
						"description":"External MCP proposal ID created by this OAuth grant."
					},
					"candidateHash":{
						"type":"string",
						"description":"Exact candidate hash returned by submit/status."
					},
					"previewInput":{
						"type":"object"
					}
				},
				"required":[
					"proposalId",
					"candidateHash",
					"previewInput"
				],
				"additionalProperties":false
			},
			"annotations":{
				"title":"dfc_artifact_preview",
				"readOnlyHint":false,
				"destructiveHint":false,
				"idempotentHint":true
			}
		},
		{
			"name":"dfc_artifact_status",
			"description":"Read compact lifecycle status for an external proposal and/or immutable apply plan owned by this OAuth grant. After an ontology PLAN transport timeout, query the original proposalId; MODEL_PLAN_COMPLETED means recover the original receipt with dfc_artifact_plan using the same proposal, candidate, target version and key. MODEL_PLAN_SUBMITTED is an unfinished request, not a validation PASS or publication. READY is not APPLIED.",
			"inputSchema":{
				"type":"object",
				"properties":{
					"proposalId":{
						"type":"string",
						"description":"External MCP proposal ID created by this OAuth grant."
					},
					"planId":{
						"type":"string",
						"description":"Immutable apply-plan ID created by this OAuth grant."
					}
				},
				"required":[],
				"additionalProperties":false
			},
			"annotations":{
				"title":"dfc_artifact_status",
				"readOnlyHint":true,
				"destructiveHint":false,
				"idempotentHint":true
			}
		},
		{
			"name":"dfc_artifact_plan",
			"description":"Create an immutable apply plan from a READY external proposal. Legacy artifact plans require human approval. Ontology plans declare approvalMode: POLICY_AUTO uses the original explicit automatic-publication delegation and server policy; HUMAN_REQUIRED uses the original human approval route. Never ask for a per-plan human signature for an already approved POLICY_AUTO plan. Ontology proposals use their configured production profile: PLANNING_INCOMPLETE with remainingCapabilities is not a validated plan and cannot be approved or applied. VALIDATION_UNSATISFIED reports a completed validation child whose current reassessment still has remainingCheckIds; no plan was created. Follow nextAction rather than retrying the same terminal validation as if it could approve or publish. Completed ontology requests recover their original authorized receipt. A transport timeout is not a terminal failure: query dfc_artifact_status with the original proposalId before recovering the same PLAN request; do not submit another proposal or replace its idempotency key. Only an APPLIED receipt proves publication.",
			"inputSchema":{
				"type":"object",
				"properties":{
					"proposalId":{
						"type":"string",
						"description":"READY external MCP proposal ID."
					},
					"candidateHash":{
						"type":"string",
						"description":"Candidate hash returned by submit/status."
					},
					"expectedTargetVersion":{
						"type":"integer",
						"minimum":0
					},
					"idempotencyKey":{
						"type":"string",
						"description":"Caller-stable key, maximum 128 characters. For ontology publication, reuse the exact idempotencyKey returned by dfc_artifact_submit; submit and PLAN are stages of the same MODEL_PLAN request."
					}
				},
				"required":[
					"proposalId",
					"candidateHash",
					"expectedTargetVersion",
					"idempotencyKey"
				],
				"additionalProperties":false
			},
			"annotations":{
				"title":"dfc_artifact_plan",
				"readOnlyHint":false,
				"destructiveHint":false,
				"idempotentHint":true
			}
		},
		{
			"name":"dfc_artifact_apply",
			"description":"Apply exactly one approved immutable plan. Live authorization, target version, validation and bounded preview are rechecked.",
			"inputSchema":{
				"type":"object",
				"properties":{
					"planId":{
						"type":"string",
						"description":"Immutable apply-plan ID."
					},
					"planHash":{
						"type":"string",
						"description":"Plan hash returned by dfc_artifact_plan."
					},
					"approvalToken":{
						"type":"string",
						"description":"Short-lived token issued only by the interactive DataFocus approval endpoint."
					},
					"idempotencyKey":{
						"type":"string",
						"description":"The exact idempotency key bound into the plan."
					}
				},
				"required":[
					"planId",
					"planHash",
					"approvalToken",
					"idempotencyKey"
				],
				"additionalProperties":false
			},
			"annotations":{
				"title":"dfc_artifact_apply",
				"readOnlyHint":false,
				"destructiveHint":true,
				"idempotentHint":true
			}
		},
		{
			"name":"dfc_artifact_submit",
			"description":"Submit declarations for server-side candidate creation, or bind an existing candidate to planning. An explicitly enabled initial-activation retirement uses its own contractVersion and requires a new human-approved plan. Creating a candidate does not confirm knowledge, approve, or publish it.",
			"inputSchema":{
				"oneOf":[
					{
						"type":"object",
						"properties":{
							"artifactType":{
								"type":"string",
								"enum":[
									"CONTROL_PANEL_SPEC",
									"VIEW_SPEC"
								]
							},
							"scopeType":{
								"type":"string",
								"description":"For ontology AutoML use ONTOLOGY and ontologyId; never combine projectId and ontologyId."
							},
							"ontologyId":{
								"type":"string",
								"description":"Ontology ID selected in this OAuth grant."
							},
							"projectId":{
								"type":"string",
								"description":"Project ID selected in this OAuth grant; required for VIEW_SPEC."
							},
							"artifactId":{
								"type":"string",
								"description":"Existing artifact ID for edit mode."
							},
							"instruction":{
								"type":"string",
								"description":"Authoring requirement; must be identical for context and submit."
							},
							"variables":{
								"type":"object"
							},
							"previewInput":{
								"type":"object"
							},
							"viewport":{
								"type":"object"
							},
							"contractVersion":{
								"type":"string",
								"description":"Version returned by dfc_artifact_context."
							},
							"contextHash":{
								"type":"string",
								"description":"Context hash returned by dfc_artifact_context."
							},
							"baseArtifactHash":{
								"type":"string",
								"description":"Current artifact hash returned by dfc_artifact_context."
							},
							"baseArtifactVersion":{
								"type":"integer",
								"minimum":0
							},
							"candidate":{
								"description":"Candidate matching the returned artifact contract.",
								"type":"object"
							},
							"clientRequestId":{
								"type":"string",
								"description":"Caller-stable idempotency key, maximum 128 characters."
							}
						},
						"required":[
							"artifactType",
							"instruction",
							"contractVersion",
							"contextHash",
							"baseArtifactHash",
							"baseArtifactVersion",
							"candidate",
							"clientRequestId"
						],
						"additionalProperties":false
					},
					{
						"type":"object",
						"properties":{
							"artifactType":{
								"type":"string",
								"enum":[
									"ONTOLOGY_RELEASE"
								]
							},
							"contractVersion":{
								"type":"string",
								"enum":[
									"ontology-publication-mcp-submit-v1",
									"ontology-publication-mcp-submit-v2",
									"ontology-publication-mcp-submit-v3",
									"ontology-publication-mcp-submit-v4",
									"ontology-publication-mcp-submit-v5",
									"ontology-publication-mcp-submit-v6"
								]
							},
							"ontologyId":{
								"type":"string",
								"description":"Existing ontology ID selected in this OAuth grant; new ontology targets are unsupported."
							},
							"candidateHash":{
								"type":"string",
								"description":"Exact hash of the existing server candidate workspace revision."
							},
							"workspaceId":{
								"type":"string",
								"description":"Existing candidate workspace ID."
							},
							"workspaceRevision":{
								"type":"string",
								"description":"Exact existing candidate workspace revision; never latest."
							},
							"releases":{
								"type":"object"
							},
							"selection":{
								"type":"object",
								"description":"Explicit domain/release/review/scope/document selection coordinates only. V3 uses businessReviewDecisionId instead of per-resource reviews; no source evidence, approval, runtime, authorization or gate outcome fields."
							},
							"idempotencyKey":{
								"type":"string",
								"description":"Caller-stable MODEL_PLAN idempotency key, maximum 128 characters."
							}
						},
						"required":[
							"artifactType",
							"contractVersion",
							"ontologyId",
							"candidateHash",
							"workspaceId",
							"workspaceRevision",
							"releases",
							"selection",
							"idempotencyKey"
						],
						"additionalProperties":false
					},
					{
						"oneOf":[
							{
								"type":"object",
								"properties":{
									"artifactType":{
										"type":"string",
										"enum":[
											"ONTOLOGY_RELEASE"
										]
									},
									"contractVersion":{
										"type":"string",
										"enum":[
											"ontology-workspace-create-mcp-submit-v1"
										]
									},
									"ontologyId":{
										"type":"string",
										"description":"Existing authorized ontology container ID."
									},
									"workspaceId":{
										"type":"string",
										"description":"Stable new candidate workspace ID; retry the exact same declarations and key."
									},
									"resources":{
										"type":"array",
										"items":{
											"type":"object"
										},
										"minItems":1,
										"description":"Resource declarations from ontology-model-candidate-v1; server compiles them. Only local ontology references and currently authorized direct-document or enrolled structured sources are supported; no compiled facts or authority flags."
									},
									"idempotencyKey":{
										"type":"string",
										"description":"Stable WORKSPACE_CREATE request key, maximum 128 Unicode code points."
									}
								},
								"required":[
									"artifactType",
									"contractVersion",
									"ontologyId",
									"workspaceId",
									"resources",
									"idempotencyKey"
								],
								"additionalProperties":false
							},
							{
								"type":"object",
								"properties":{
									"artifactType":{
										"type":"string",
										"enum":[
											"ONTOLOGY_RELEASE"
										]
									},
									"contractVersion":{
										"type":"string",
										"enum":[
											"ontology-workspace-create-mcp-submit-v2"
										]
									},
									"ontologyId":{
										"type":"string",
										"description":"Existing authorized ontology container ID."
									},
									"workspaceId":{
										"type":"string",
										"description":"Stable new candidate workspace ID; retry the exact same declarations and key."
									},
									"resources":{
										"type":"array",
										"items":{
											"type":"object"
										},
										"minItems":1,
										"description":"Resource declarations with local and exact persisted references. Every published member is read through its current original source and ontology ACL; no copied published bodies or authority flags."
									},
									"idempotencyKey":{
										"type":"string",
										"description":"Stable WORKSPACE_CREATE request key, maximum 128 Unicode code points."
									},
									"releaseSelections":{
										"type":"object",
										"minProperties":1,
										"maxProperties":256,
										"additionalProperties":{
											"type":"string",
											"description":"Exact committed release ID for each referenced resource, including closure dependencies; never latest or ACTIVE. This selection does not grant READ or establish business authority."
										}
									}
								},
								"required":[
									"artifactType",
									"contractVersion",
									"ontologyId",
									"workspaceId",
									"resources",
									"idempotencyKey",
									"releaseSelections"
								],
								"additionalProperties":false
							}
						]
					},
					{
						"type":"object",
						"properties":{
							"artifactType":{
								"type":"string",
								"enum":[
									"ONTOLOGY_RELEASE"
								]
							},
							"contractVersion":{
								"type":"string",
								"enum":[
									"ontology-initial-activation-retirement-submit-v1"
								]
							},
							"ontologyId":{
								"type":"string",
								"description":"Existing authorized ontology ID."
							},
							"domainRid":{
								"type":"string",
								"description":"Exact domain of the original initial activation."
							},
							"consumerScopes":{
								"minItems":1,
								"maxItems":256,
								"uniqueItems":true,
								"type":"array",
								"items":{
									"type":"string",
									"description":"Exact currently managed consumer scope."
								}
							},
							"idempotencyKey":{
								"type":"string",
								"description":"Stable new controlled MODEL_PLAN request key."
							}
						},
						"required":[
							"artifactType",
							"contractVersion",
							"ontologyId",
							"domainRid",
							"consumerScopes",
							"idempotencyKey"
						],
						"additionalProperties":false
					}
				],
				"type":"object"
			},
			"annotations":{
				"title":"dfc_artifact_submit",
				"readOnlyHint":false,
				"destructiveHint":false,
				"idempotentHint":true
			}
		},
		{
			"outputSchema":{
				"$schema":"http://json-schema.org/draft-07/schema#",
				"$comment":"Not publicly registered. ADMITTED records original input admission only; it is not a Question, human decision, completed operation, publication, or independent commit attestation. Current read authorization is required on every disclosure. Original operation and admission time are preserved on replay; neither is regenerated from current time.",
				"additionalProperties":false,
				"title":"Original knowledge input admission view",
				"type":"object",
				"required":[
					"version",
					"observation",
					"operationRef",
					"admittedAtEpochMillis"
				],
				"properties":{
					"operationRef":{
						"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$(?![\\s\\S])",
						"type":"string",
						"maxLength":128
					},
					"observation":{
						"const":"ADMITTED"
					},
					"admittedAtEpochMillis":{
						"pattern":"^[1-9][0-9]{0,18}$(?![\\s\\S])",
						"type":"string",
						"maxLength":19
					},
					"version":{
						"const":"ontology-knowledge-input-admission-view-v1"
					}
				},
				"$id":"urn:datafocus:ontology:knowledge-input-admission-view:v1:draft"
			},
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"definitions":{
					"Id":{
						"pattern":"^[A-Za-z0-9_.:/-]{1,128}$(?![\\s\\S])",
						"type":"string",
						"maxLength":128
					}
				},
				"required":[
					"idempotencyKey",
					"request"
				],
				"properties":{
					"request":{
						"$comment":"Not publicly registered. Identity and idempotency key are authenticated boundary metadata, never body-supplied authority. Shape validation is not business provenance or authorization. Runtime also enforces strict canonical JSON and byte/depth limits. Admission is not Question generation or completion.",
						"additionalProperties":false,
						"title":"Original knowledge business input request",
						"type":"object",
						"required":[
							"contractVersion",
							"target",
							"input"
						],
						"properties":{
							"traceId":{
								"type":"string",
								"maxLength":256
							},
							"input":{
								"additionalProperties":false,
								"type":"object",
								"required":[
									"version",
									"workspaceId",
									"workspaceRevision",
									"localRef",
									"preparationDigest",
									"businessInputs"
								],
								"properties":{
									"localRef":{
										"$ref":"#/definitions/Id"
									},
									"businessInputs":{
										"type":"object",
										"minProperties":1
									},
									"preparationDigest":{
										"minLength":64,
										"pattern":"^[a-f0-9]{64}$(?![\\s\\S])",
										"type":"string",
										"maxLength":64
									},
									"version":{
										"const":"ontology-knowledge-workspace-production-inputs-v1"
									},
									"workspaceId":{
										"$ref":"#/definitions/Id"
									},
									"workspaceRevision":{
										"pattern":"^[1-9][0-9]{0,17}$(?![\\s\\S])",
										"type":"string",
										"maxLength":18
									}
								}
							},
							"requestId":{
								"type":"string",
								"maxLength":256
							},
							"contractVersion":{
								"const":"ontology-knowledge-business-input-request-v1"
							},
							"target":{
								"additionalProperties":false,
								"type":"object",
								"required":[
									"ontologyId"
								],
								"properties":{
									"ontologyId":{
										"pattern":"^[1-9][0-9]{0,18}$(?![\\s\\S])",
										"type":"string",
										"maxLength":19
									}
								}
							}
						}
					},
					"idempotencyKey":{
						"minLength":1,
						"pattern":"^[^\\u0000-\\u0020\\u007f]+$(?![\\s\\S])",
						"type":"string",
						"maxLength":128
					}
				}
			},
			"name":"dfc_ontology_knowledge_input_propose",
			"description":"Admit original business input for an existing ontology workspace. Does not generate a Question, confirm knowledge, approve, plan or publish. Requires current OAuth and source authorization; replay returns the original admission under current READ. Use the same idempotency key only for the same original input.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":true,
				"destructiveHint":false,
				"readOnlyHint":false
			}
		},
		{
			"outputSchema":{
				"$schema":"http://json-schema.org/draft-07/schema#",
				"$comment":"Assembled locally with the complete original Question definitions. Display only, not production admission, semantic truth, source authorization or confirmation. Review scope and declaration identity retain the source projection's versioned typed objects; their current authorization is checked by the producer, not this schema.",
				"additionalProperties":false,
				"type":"object",
				"definitions":{
					"DecisionRef":{
						"additionalProperties":false,
						"type":"object",
						"required":[
							"decisionId",
							"revision",
							"decisionDigest"
						],
						"properties":{
							"decisionDigest":{
								"$ref":"#/definitions/Hash"
							},
							"decisionId":{
								"$ref":"#/definitions/Id"
							},
							"revision":{
								"$ref":"#/definitions/Id"
							}
						}
					},
					"Refs":{
						"maxItems":256,
						"uniqueItems":true,
						"type":"array",
						"items":{
							"$ref":"#/definitions/Id"
						}
					},
					"Instant":{
						"format":"date-time",
						"pattern":"^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\.[0-9]{1,9})?Z$(?![\\s\\S])",
						"$comment":"Actual calendar and policy validity require server parsing.",
						"type":"string",
						"maxLength":40
					},
					"RequiredRefs":{
						"allOf":[
							{
								"$ref":"#/definitions/Refs"
							},
							{
								"minItems":1
							}
						]
					},
					"Text":{
						"minLength":1,
						"pattern":"\\S",
						"type":"string",
						"maxLength":8192
					},
					"Responsibility":{
						"additionalProperties":false,
						"type":"object",
						"required":[
							"version",
							"tenantId",
							"ref",
							"kind",
							"revision"
						],
						"properties":{
							"ref":{
								"pattern":"^(user|role|position|department)/[1-9][0-9]{0,18}$(?![\\s\\S])",
								"type":"string"
							},
							"kind":{
								"enum":[
									"user",
									"role",
									"position",
									"department"
								]
							},
							"tenantId":{
								"$ref":"#/definitions/PositiveCoordinate"
							},
							"version":{
								"const":"ontology-knowledge-responsibility-uc-v1"
							},
							"revision":{
								"$ref":"#/definitions/PositiveCoordinate"
							}
						}
					},
					"Hash":{
						"minLength":64,
						"pattern":"^[a-f0-9]{64}$(?![\\s\\S])",
						"type":"string",
						"maxLength":64
					},
					"Declared":{
						"additionalProperties":false,
						"type":"object",
						"required":[
							"version",
							"workspaceId",
							"workspaceRevision",
							"preparationDigest",
							"impactCompletenessVerified",
							"declarations"
						],
						"properties":{
							"impactCompletenessVerified":{
								"const":false
							},
							"preparationDigest":{
								"$ref":"#/definitions/Hash"
							},
							"version":{
								"const":"ontology-knowledge-local-affected-bindings-v1"
							},
							"declarations":{
								"propertyNames":{
									"$ref":"#/definitions/Id"
								},
								"maxProperties":256,
								"additionalProperties":{
									"additionalProperties":false,
									"type":"object",
									"required":[
										"questionId",
										"declarationDigest",
										"currentRead",
										"identity"
									],
									"properties":{
										"questionId":{
											"$ref":"#/definitions/Id"
										},
										"identity":{
											"type":"object"
										},
										"currentRead":{
											"$ref":"#/definitions/Hash"
										},
										"declarationDigest":{
											"$ref":"#/definitions/Hash"
										}
									}
								},
								"type":"object",
								"minProperties":1
							},
							"workspaceId":{
								"$ref":"#/definitions/Id"
							},
							"workspaceRevision":{
								"$ref":"#/definitions/PositiveCoordinate"
							}
						}
					},
					"Recommendation":{
						"additionalProperties":false,
						"$comment":"Advice only, never selected/submitted answer. Basis may be explicit business reasoning; evidence refs must be a subset of disclosed evidenceRefs and actually readable. Do not manufacture evidence when none exists.",
						"type":"object",
						"required":[
							"explanation",
							"basis",
							"evidenceRefs"
						],
						"properties":{
							"evidenceRefs":{
								"$ref":"#/definitions/Refs"
							},
							"explanation":{
								"$ref":"#/definitions/Text"
							},
							"basis":{
								"$ref":"#/definitions/Text"
							}
						}
					},
					"QuestionRef":{
						"additionalProperties":false,
						"type":"object",
						"required":[
							"questionId",
							"revision"
						],
						"properties":{
							"questionId":{
								"$ref":"#/definitions/Id"
							},
							"revision":{
								"$ref":"#/definitions/Id"
							}
						}
					},
					"Draft":{
						"additionalProperties":false,
						"type":"object",
						"required":[
							"version",
							"originalRequestHash",
							"originalAdmissionDigest",
							"preparationDigest",
							"materialDigest",
							"semanticAssessmentComplete",
							"productionAdmitted",
							"confirmationGranted",
							"declaredResourceBindings",
							"responsibilityObject",
							"questionDependencyBindings",
							"candidateDisplay",
							"draftDigest"
						],
						"properties":{
							"originalAdmissionDigest":{
								"$ref":"#/definitions/Hash"
							},
							"draftDigest":{
								"$ref":"#/definitions/Hash"
							},
							"declaredResourceBindings":{
								"$ref":"#/definitions/Declared"
							},
							"materialDigest":{
								"$ref":"#/definitions/Hash"
							},
							"questionDependencyBindings":{
								"$ref":"#/definitions/Dependencies"
							},
							"responsibilityObject":{
								"$ref":"#/definitions/Responsibility"
							},
							"preparationDigest":{
								"$ref":"#/definitions/Hash"
							},
							"originalRequestHash":{
								"$ref":"#/definitions/Hash"
							},
							"semanticAssessmentComplete":{
								"const":false
							},
							"productionAdmitted":{
								"const":false
							},
							"version":{
								"const":"ontology-knowledge-authored-question-draft-v3"
							},
							"confirmationGranted":{
								"const":false
							},
							"candidateDisplay":{
								"additionalProperties":false,
								"type":"object",
								"required":[
									"version",
									"sliceDigest",
									"question",
									"review"
								],
								"properties":{
									"sliceDigest":{
										"$ref":"#/definitions/Hash"
									},
									"question":{
										"allOf":[
											{
												"$ref":"#/definitions/Question"
											},
											{
												"properties":{
													"decisionEvidenceRef":{
														"type":"null"
													}
												}
											}
										]
									},
									"review":{
										"additionalProperties":false,
										"type":"object",
										"required":[
											"definition",
											"exceptions",
											"scope"
										],
										"properties":{
											"scope":{
												"type":"object"
											},
											"definition":{
												"type":"string"
											},
											"exceptions":{
												"type":"array"
											}
										}
									},
									"version":{
										"const":"ontology-knowledge-question-display-v1"
									}
								}
							}
						}
					},
					"Option":{
						"additionalProperties":false,
						"type":"object",
						"required":[
							"optionId",
							"label",
							"businessImpact"
						],
						"properties":{
							"optionId":{
								"$ref":"#/definitions/Id"
							},
							"businessImpact":{
								"$ref":"#/definitions/Text"
							},
							"label":{
								"$ref":"#/definitions/Text"
							}
						}
					},
					"Question":{
						"allOf":[
							{
								"else":{
									"properties":{
										"options":{
											"maxItems":0
										}
									}
								},
								"then":{
									"properties":{
										"options":{
											"minItems":1
										}
									}
								},
								"if":{
									"properties":{
										"answerType":{
											"const":"CHOICE"
										}
									}
								}
							},
							{
								"then":{
									"properties":{
										"blockingStage":{
											"type":"string"
										}
									}
								},
								"if":{
									"properties":{
										"severity":{
											"const":"BLOCKING"
										}
									}
								}
							}
						],
						"$comment":"Unregistered proposal. All refs must be resolved in trusted tenant/workspace context with current READ before disclosure. Schema validation is not authorization, evidence completeness, decision authenticity or semantic correctness. reviewDigest binds the exact immutable display material, not this current disclosure view. decisionEvidenceRef is a server-derived historical pointer, never current applicability or publishing approval.",
						"additionalProperties":false,
						"title":"Draft server-produced knowledge clarification question, not a client write command",
						"type":"object",
						"required":[
							"version",
							"questionId",
							"revision",
							"reviewDigest",
							"knowledgeReviewDigest",
							"claimRefs",
							"evidenceRefs",
							"question",
							"answerType",
							"options",
							"recommendation",
							"affectedResourceRefs",
							"businessImpact",
							"blockingStage",
							"severity",
							"ownerRef",
							"dueAt",
							"dependsOn",
							"resolutionGroupKey",
							"decisionEvidenceRef"
						],
						"properties":{
							"severity":{
								"enum":[
									"BLOCKING",
									"NON_BLOCKING"
								]
							},
							"resolutionGroupKey":{
								"oneOf":[
									{
										"type":"null"
									},
									{
										"$ref":"#/definitions/Id"
									}
								],
								"$comment":"Explicit common decision scope; server validates scope equivalence, no fuzzy merge."
							},
							"decisionEvidenceRef":{
								"oneOf":[
									{
										"type":"null"
									},
									{
										"$ref":"#/definitions/DecisionRef"
									}
								]
							},
							"ownerRef":{
								"$comment":"Responsibility reference, not permission delegation.",
								"$ref":"#/definitions/Id"
							},
							"questionId":{
								"$ref":"#/definitions/Id"
							},
							"reviewDigest":{
								"$comment":"SHA256 of canonical {version: ontology-knowledge-question-review-v1, question: <all fields except reviewDigest and decisionEvidenceRef>}. Arrays retain display order. Server recomputes; hash alone does not establish provenance. This is not the legacy knowledge contentDigest/sliceDigest.",
								"$ref":"#/definitions/Hash"
							},
							"question":{
								"$ref":"#/definitions/Text"
							},
							"dependsOn":{
								"maxItems":256,
								"uniqueItems":true,
								"type":"array",
								"items":{
									"$ref":"#/definitions/QuestionRef"
								}
							},
							"answerType":{
								"enum":[
									"TEXT",
									"BOOLEAN",
									"CHOICE"
								]
							},
							"recommendation":{
								"oneOf":[
									{
										"type":"null"
									},
									{
										"$ref":"#/definitions/Recommendation"
									}
								]
							},
							"businessImpact":{
								"$ref":"#/definitions/Text"
							},
							"version":{
								"const":"ontology-knowledge-question-v1"
							},
							"revision":{
								"$ref":"#/definitions/Id"
							},
							"dueAt":{
								"oneOf":[
									{
										"type":"null"
									},
									{
										"$ref":"#/definitions/Instant"
									}
								]
							},
							"blockingStage":{
								"oneOf":[
									{
										"type":"null"
									},
									{
										"$ref":"#/definitions/Id"
									}
								],
								"$comment":"Server resolves registered stage and earliest blocking policy. Null explicitly means no blocking stage; never inferred from absence."
							},
							"evidenceRefs":{
								"$comment":"Exact authorized evidence-binding identifiers; generated summaries are not citation evidence. Empty means no evidence declared, not a completeness PASS.",
								"$ref":"#/definitions/Refs"
							},
							"knowledgeReviewDigest":{
								"$comment":"Exact original knowledge review contentDigest (definition, exceptions, typed scope). Full review must accompany the Question; an agent summary is not a substitute. Resolved and rehashed from the authorized original question material, not supplied as authority by the client.",
								"$ref":"#/definitions/Hash"
							},
							"options":{
								"maxItems":64,
								"type":"array",
								"items":{
									"$ref":"#/definitions/Option"
								}
							},
							"claimRefs":{
								"$ref":"#/definitions/RequiredRefs"
							},
							"affectedResourceRefs":{
								"$comment":"Trusted exact resource/declaration binding IDs, not inferred RID aliases or arbitrary paths.",
								"$ref":"#/definitions/RequiredRefs"
							}
						}
					},
					"PositiveCoordinate":{
						"pattern":"^[1-9][0-9]{0,18}$(?![\\s\\S])",
						"type":"string"
					},
					"Dependencies":{
						"additionalProperties":false,
						"type":"object",
						"required":[
							"version",
							"rootQuestionId",
							"rootIsUnpublishedDraft",
							"dependentAnswersVerified",
							"questions",
							"graphDigest"
						],
						"properties":{
							"graphDigest":{
								"$ref":"#/definitions/Hash"
							},
							"rootIsUnpublishedDraft":{
								"const":true
							},
							"rootQuestionId":{
								"$ref":"#/definitions/Id"
							},
							"dependentAnswersVerified":{
								"const":false
							},
							"questions":{
								"propertyNames":{
									"$ref":"#/definitions/Id"
								},
								"maxProperties":256,
								"additionalProperties":{
									"additionalProperties":false,
									"type":"object",
									"required":[
										"revision",
										"reviewDigest",
										"knowledgeReviewDigest"
									],
									"properties":{
										"reviewDigest":{
											"$ref":"#/definitions/Hash"
										},
										"knowledgeReviewDigest":{
											"$ref":"#/definitions/Hash"
										},
										"revision":{
											"$ref":"#/definitions/Id"
										}
									}
								},
								"type":"object",
								"minProperties":1
							},
							"version":{
								"const":"ontology-knowledge-draft-dependency-bindings-v1"
							}
						}
					},
					"Id":{
						"pattern":"^[A-Za-z0-9_.:/-]{1,128}$(?![\\s\\S])",
						"type":"string",
						"maxLength":128
					}
				},
				"required":[
					"version",
					"policyVersion",
					"observedAt",
					"expiresAt",
					"persisted",
					"draft"
				],
				"properties":{
					"policyVersion":{
						"const":"ontology-knowledge-ephemeral-preview-v1"
					},
					"observedAt":{
						"$ref":"#/definitions/Instant"
					},
					"draft":{
						"$ref":"#/definitions/Draft"
					},
					"persisted":{
						"const":false
					},
					"version":{
						"const":"ontology-knowledge-input-preview-v1"
					},
					"expiresAt":{
						"$ref":"#/definitions/Instant"
					}
				},
				"$id":"urn:datafocus:ontology:knowledge-input-preview:v1:draft"
			},
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"required":[
					"idempotencyKey",
					"ontologyId"
				],
				"properties":{
					"idempotencyKey":{
						"minLength":1,
						"pattern":"^[^\\u0000-\\u0020\\u007f]+$(?![\\s\\S])",
						"type":"string",
						"maxLength":128
					},
					"ontologyId":{
						"pattern":"^[1-9][0-9]{0,18}$(?![\\s\\S])",
						"type":"string"
					}
				}
			},
			"name":"dfc_ontology_knowledge_input_preview",
			"description":"Preview an ephemeral Question draft from your existing input admission. The key identifies that original input, not a new command. Requires current OAuth MODEL_AUTHOR and complete current source READ. Does not persist a Question, validate complete business semantics, confirm, approve or publish. Each preview gets a server revision and a 60-second window; it is not an idempotent production receipt.",
			"annotations":{
				"idempotentHint":false,
				"openWorldHint":true,
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"outputSchema":{
				"additionalProperties":false,
				"type":"object",
				"definitions":{
					"Revision":{
						"pattern":"^[A-Za-z0-9_.:/-]{1,128}$(?![\\s\\S])",
						"type":"string"
					},
					"Hash":{
						"pattern":"^[a-f0-9]{64}$(?![\\s\\S])",
						"type":"string"
					}
				},
				"required":[
					"version",
					"policyVersion",
					"state",
					"knowledgeConfirmed",
					"publicationAuthorized",
					"responsibilityGrantsRights",
					"answersAutomaticallyMerged",
					"knowledgeConfirmationPage",
					"command"
				],
				"properties":{
					"policyVersion":{
						"const":"ontology-authored-unconfirmed-question-policy-v1"
					},
					"publicationAuthorized":{
						"const":false
					},
					"knowledgeConfirmationPage":{
						"pattern":"^/ontology-knowledge-confirmation\\.html\\?ontologyId=[1-9][0-9]{0,18}&questionId=[A-Za-z0-9_.%:-]{1,384}$(?![\\s\\S])",
						"type":"string"
					},
					"state":{
						"const":"QUESTION_STORED_UNCONFIRMED"
					},
					"knowledgeConfirmed":{
						"const":false
					},
					"version":{
						"const":"ontology-authored-question-submission-v2"
					},
					"command":{
						"additionalProperties":false,
						"type":"object",
						"required":[
							"requestDigest",
							"ontologyId",
							"questionId",
							"questionRevision",
							"materialDigest",
							"authorityDigest",
							"claimsDigest",
							"evidenceDigest",
							"completedAt"
						],
						"properties":{
							"authorityDigest":{
								"$ref":"#/definitions/Hash"
							},
							"completedAt":{
								"format":"date-time",
								"type":"string"
							},
							"questionId":{
								"$ref":"#/definitions/Revision"
							},
							"questionRevision":{
								"$ref":"#/definitions/Revision"
							},
							"materialDigest":{
								"$ref":"#/definitions/Hash"
							},
							"ontologyId":{
								"pattern":"^[1-9][0-9]{0,18}$(?![\\s\\S])",
								"type":"string"
							},
							"claimsDigest":{
								"$ref":"#/definitions/Hash"
							},
							"requestDigest":{
								"$ref":"#/definitions/Hash"
							},
							"evidenceDigest":{
								"$ref":"#/definitions/Hash"
							}
						}
					},
					"responsibilityGrantsRights":{
						"const":false
					},
					"answersAutomaticallyMerged":{
						"const":false
					}
				}
			},
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"definitions":{
					"Revision":{
						"pattern":"^[A-Za-z0-9_.:/-]{1,128}$(?![\\s\\S])",
						"type":"string"
					},
					"Instant":{
						"format":"date-time",
						"pattern":"Z$(?![\\s\\S])",
						"type":"string",
						"maxLength":40
					},
					"Key":{
						"minLength":1,
						"pattern":"^[^\\u0000-\\u0020\\u007f]+$(?![\\s\\S])",
						"type":"string",
						"maxLength":128
					}
				},
				"required":[
					"idempotencyKey",
					"originalInputKey",
					"ontologyId",
					"questionRevision",
					"validFrom",
					"validUntil",
					"expectedRevision"
				],
				"properties":{
					"questionRevision":{
						"$ref":"#/definitions/Revision"
					},
					"idempotencyKey":{
						"$ref":"#/definitions/Key"
					},
					"originalInputKey":{
						"$ref":"#/definitions/Key"
					},
					"ontologyId":{
						"pattern":"^[1-9][0-9]{0,18}$(?![\\s\\S])",
						"type":"string"
					},
					"validUntil":{
						"$ref":"#/definitions/Instant"
					},
					"expectedRevision":{
						"oneOf":[
							{
								"type":"null"
							},
							{
								"$ref":"#/definitions/Revision"
							}
						]
					},
					"validFrom":{
						"$ref":"#/definitions/Instant"
					}
				}
			},
			"name":"dfc_ontology_knowledge_question_submit",
			"description":"Persist an authored, UNCONFIRMED clarification Question from your existing input admission. Supply a new command idempotency key, explicit Question revision/window and expected head (null for create). Same-key retries must retain all parameters and still require current MODEL_AUTHOR, owner and full source READ. Does not grant responsibility permissions, merge answers, confirm knowledge or approve publication. The returned relative confirmation-page locator only pre-fills the existing authenticated human page; it contains no bearer, does not open the page, and does not confirm knowledge.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":true,
				"destructiveHint":false,
				"readOnlyHint":false
			}
		},
		{
			"outputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"consumerScope":{
						"type":"string"
					},
					"requestState":{
						"const":"COMPLETED",
						"type":"string"
					},
					"initialRevision":{
						"const":"1",
						"type":"string"
					},
					"eventRef":{
						"type":"string"
					},
					"published":{
						"const":false,
						"type":"boolean"
					},
					"version":{
						"const":"ontology-business-scope-initialization-v1",
						"type":"string"
					},
					"domainRid":{
						"type":"string"
					},
					"activationAuthorized":{
						"const":false,
						"type":"boolean"
					},
					"recordedAt":{
						"type":"string"
					},
					"tenantId":{
						"type":"string"
					},
					"ontologyId":{
						"type":"string"
					},
					"requestHash":{
						"type":"string"
					},
					"state":{
						"const":"INITIALIZED",
						"type":"string"
					}
				},
				"required":[
					"version",
					"state",
					"tenantId",
					"ontologyId",
					"domainRid",
					"consumerScope",
					"initialRevision",
					"eventRef",
					"requestHash",
					"recordedAt",
					"requestState",
					"published",
					"activationAuthorized"
				]
			},
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"required":[
					"idempotencyKey",
					"ontologyId",
					"domainRid",
					"domainRevisionId",
					"businessSystemId"
				],
				"properties":{
					"domainRevisionId":{
						"minLength":1,
						"pattern":"^(?![Ll][Aa][Tt][Ee][Ss][Tt]$)[A-Za-z0-9][A-Za-z0-9_.:/-]{0,127}$(?![\\s\\S])",
						"type":"string",
						"maxLength":128
					},
					"idempotencyKey":{
						"minLength":1,
						"pattern":"^[^\\u0000-\\u0020\\u007f]+$(?![\\s\\S])",
						"type":"string",
						"maxLength":128
					},
					"businessSystemId":{
						"minLength":1,
						"pattern":"^[1-9][0-9]{0,18}$(?![\\s\\S])",
						"type":"string"
					},
					"ontologyId":{
						"minLength":1,
						"pattern":"^[1-9][0-9]{0,18}$(?![\\s\\S])",
						"type":"string"
					},
					"domainRid":{
						"minLength":1,
						"pattern":"^(?![Ll][Aa][Tt][Ee][Ss][Tt]$)[A-Za-z0-9][A-Za-z0-9_.:/-]{0,127}$(?![\\s\\S])",
						"type":"string",
						"maxLength":128
					}
				}
			},
			"name":"dfc_ontology_business_scope_initialize",
			"description":"Explicitly initialize one BusinessSystem consumer scope. Requires current ontology publication rights AND exact business management rights. Does not publish, approve, activate or grant source access. Same-key retries recover the original event under current READ; retain all original arguments.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":true,
				"destructiveHint":false,
				"readOnlyHint":false
			}
		}
	],
	"businessEndpoint":"/mcp/business",
	"businessTools":[
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{}
			},
			"name":"dfb_systems",
			"description":"List only active business systems selected in this OAuth grant.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfb_systems",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"systemId":{
						"description":"Allowed business system ID.",
						"type":[
							"string",
							"integer"
						]
					}
				},
				"required":[
					"systemId"
				]
			},
			"name":"dfb_system_describe",
			"description":"Read the principal-filtered contract for one allowed business system. Use its query and command definitions for later calls.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfb_system_describe",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"systemId":{
						"description":"Allowed business system ID.",
						"type":[
							"string",
							"integer"
						]
					},
					"queryKey":{
						"description":"Published queryKey from dfb_system_describe.",
						"type":"string"
					},
					"objectKey":{
						"description":"Optional published objectKey.",
						"type":"string"
					},
					"pageSize":{
						"description":"Rows per page; maximum 100.",
						"maximum":100,
						"type":"integer",
						"minimum":1
					},
					"page":{
						"description":"Page number; default 1.",
						"type":"integer",
						"minimum":1
					},
					"state":{
						"description":"Optional workflow-state filter.",
						"type":"string"
					}
				},
				"required":[
					"systemId",
					"queryKey"
				]
			},
			"name":"dfb_query",
			"description":"Run one published read-only query from the system contract. Results are paginated and output-filtered.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfb_query",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"recordId":{
						"description":"Business record ID.",
						"type":[
							"string",
							"integer"
						]
					},
					"systemId":{
						"description":"Allowed business system ID.",
						"type":[
							"string",
							"integer"
						]
					}
				},
				"required":[
					"systemId",
					"recordId"
				]
			},
			"name":"dfb_record",
			"description":"Read one business record by ID when the active contract exposes its object.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfb_record",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"systemId":{
						"description":"Allowed business system ID.",
						"type":[
							"string",
							"integer"
						]
					}
				},
				"required":[
					"systemId"
				]
			},
			"name":"dfb_work_items",
			"description":"List work items visible to the authenticated user in one allowed business system.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfb_work_items",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"expectedRecordVersion":{
						"description":"Optimistic-lock version when required.",
						"type":"integer",
						"minimum":1
					},
					"systemId":{
						"description":"Allowed business system ID.",
						"type":[
							"string",
							"integer"
						]
					},
					"commandType":{
						"description":"Published commandType.",
						"type":"string"
					},
					"canonicalIrHash":{
						"description":"Pinned canonicalIrHash.",
						"type":"string"
					},
					"releaseId":{
						"description":"Pinned releaseId from dfb_system_describe.",
						"type":[
							"string",
							"integer"
						]
					},
					"payload":{
						"description":"Command payload defined by the contract.",
						"type":"object"
					},
					"releaseHash":{
						"description":"Pinned releaseHash.",
						"type":"string"
					},
					"targetRecordId":{
						"description":"Target record ID when required.",
						"type":[
							"string",
							"integer"
						]
					},
					"agentManifestHash":{
						"description":"Pinned agentManifestHash.",
						"type":"string"
					},
					"planIdempotencyKey":{
						"description":"Stable unique key reused for retries.",
						"type":"string"
					}
				},
				"required":[
					"systemId",
					"releaseId",
					"releaseHash",
					"canonicalIrHash",
					"agentManifestHash",
					"commandType",
					"planIdempotencyKey",
					"payload"
				]
			},
			"name":"dfb_action_plan",
			"description":"Create an immutable, release-pinned ActionPlan. This does not execute the action; inspect riskClass, requiresApproval and status in the result.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfb_action_plan",
				"destructiveHint":false,
				"readOnlyHint":false
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"actionPlanId":{
						"description":"ActionPlan ID returned by dfb_action_plan.",
						"type":[
							"string",
							"integer"
						]
					}
				},
				"required":[
					"actionPlanId"
				]
			},
			"name":"dfb_action_status",
			"description":"Read the current status, approval requirement and immutable coordinates of an owned ActionPlan.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfb_action_status",
				"destructiveHint":false,
				"readOnlyHint":true
			}
		},
		{
			"inputSchema":{
				"additionalProperties":false,
				"type":"object",
				"properties":{
					"approvalToken":{
						"description":"Required only after human approval.",
						"type":"string"
					},
					"actionPlanId":{
						"description":"ActionPlan ID returned by dfb_action_plan.",
						"type":[
							"string",
							"integer"
						]
					}
				},
				"required":[
					"actionPlanId"
				]
			},
			"name":"dfb_action_execute",
			"description":"Execute exactly one owned ActionPlan. Human-required plans need an approvalToken issued by DataFocus; retries are idempotent.",
			"annotations":{
				"idempotentHint":true,
				"openWorldHint":false,
				"title":"dfb_action_execute",
				"destructiveHint":true,
				"readOnlyHint":false
			}
		}
	]
}