OT Flash Agent 与 MCP 接入手册
协议 授权 工具合同与完整调用流程
使用 OT Flash r56 的公共 Remote MCP 构建可追溯的数据与知识应用。本册给出 OAuth、协议报文、所有已声明工具的参数参考、证据规则、条件能力及恢复流程,并提供可运行客户端和合成数据示例。
Agent 开发者 集成工程师及管理员
配套样例保留中文显示字段名。界面语言和说明正文的翻译不会改变实际表名、列名、枚举值、工具名或协议字段。
目录
- 1Agent 接入范围与完成标准
- 2快速连接与能力发现
- 3OAuth 发现 注册与授权
- 4Scope 资源边界与实时权限
- 5HTTP 与现代 MCP 报文
- 6旧协议客户端兼容
- 7选择正确工具与证据通道
- 8本体资源与 ID 类型
- 9Doris 表查询与结构合同
- 10多维 Top3 与截断处理
- 11知识检索 完整原文与证据资格
- 12原生 Search 模型与会话
- 13语言与区域约定
- 14融合分析与交互式结果
- 15持久可视化报告与 MCP Apps
- 16制品草稿 预览 计划与应用
- 17本体候选创建与发布合同
- 18发布模型 候选查询与引用闭包
- 19委托本体智能体任务
- 20业务工作台 MCP
- 21业务知识输入与待确认问题
- 22响应 错误与安全重试
- 23集成安全与能力边界
- 24管理员接线与条件开关
- 25可运行客户端与调用样例
- 26嵌入本体对话界面
- 27集成验收清单
- 28规范资源与维护
- 29工具参数参考 基础与原生 Search
- 30工具参数参考 表格 图谱与知识
- 31工具参数参考 分析与报告
- 32工具参数参考 建模与原任务
- 33工具参数参考 知识输入与范围
- 34工具参数参考 业务工作台
Agent 接入范围与完成标准
选择授权入口,依据服务端回执完成查询、取证或受控写入。
OT Flash r56 通过 Remote MCP 向外部 Agent 提供本体范围内的数据与知识能力,并提供独立业务工作台入口。Agent 应以实际 tools/list、inputSchema、OAuth scope 和当前资源权限决定可执行工作,不能根据静态手册推断一个部署已经启用所有可选功能。
| 入口 | 用途 | 边界 |
|---|---|---|
| /mcp | 本体 数据表 文档知识 原生 Search 及条件开放的分析与建模 | 当前用户权限与本次授权资源的交集 |
| /mcp/business | 业务系统发现 查询 动作计划 状态与执行 | 独立业务系统授权及发布契约 |
| 本体智能体嵌入页 | 在人类界面中使用本体对话 | 依赖真实登录态,不是免登录 MCP Token 交换入口 |
能力分类
- 基础读取:本体与资源、图谱定位、知识检索与完整原文、授权表详情和 Doris SQL。
- 独立委托:dfc_search 需要 search:operate,并继续使用原用户和模型权限。
- 条件开放:分析、持久报告、制品草稿与应用、本体模型查询和委托 Agent 任务。
- 不可用能力:Flash 的 dfc_etl 仅报告 capabilities,不提供 Heavy ETL 执行。AutoML 以及内部 FocusCode 工作空间入口不属于本册公共 Flash API。
完成标准
读事实必须取得实际可用的查询或完整原文回执;生成候选必须说明尚未应用;发布必须有真实 APPLIED 回执;取消必须区分请求与确认。用回答文字、HTTP 200、工具已接收或模型“已完成”描述,都不能单独证明业务操作成功。
配套 reference/mcp-tool-catalog.json 是 r56 的离线声明参考,包含条件开启的定义并非任何用户的实时 tools/list。完整目录包括 28 个本体核心工具、4 个控制器条件扩展及 8 个业务侧工具,不代表默认全部开放。
快速连接与能力发现
用实例正式域名开始,以最小权限发现实际可用工具。
- 向管理员取得正式 HTTPS 根地址和需要访问的本体或业务系统。不要使用文档中的示例域名调用真实业务。
- 将 MCP 服务器地址配置为 https://flash.example.com/mcp,业务工作台使用同域的 /mcp/business。
- 按客户端支持触发 OAuth 登录与授权,核对资源和 scope;不要提交用户名密码到 MCP。
- 使用对应时代的协议发现或初始化,再读取 tools/list 与资源说明。
- 先做一个小范围只读请求,核对结构化结果和错误,再执行用户目标。
客户端配置片段
{
"mcpServers": {
"ot-flash": {
"url": "https://flash.example.com/mcp"
}
}
}该片段说明服务器地址的配置意图,具体配置文件结构和 OAuth 支持取决于客户端。不要在公开文件中填写真实 access_token、refresh_token、Cookie 或管理员密码。
现代协议发现
POST /mcp HTTP/1.1
Host: flash.example.com
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: server/discover
{
"jsonrpc": "2.0",
"id": 1,
"method": "server/discover",
"params": {
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientInfo": {"name": "flash-client", "version": "1.0.0"},
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}接入前检查
- 资源根地址、OAuth issuer 和反向代理对外地址一致。
- 客户端支持相应协议时代,而不是向新协议入口固定发送 initialize。
- 当前授权绑定需要的本体或业务系统。
- Token 有效,且新的可选 scope 已经获得明确授权。
OAuth 发现 注册与授权
使用授权码和 PKCE,不向 Agent 暴露产品登录凭据。
| 端点 | 方法 | 作用 |
|---|---|---|
| /.well-known/oauth-protected-resource | GET | 本体 MCP 资源发现 |
| /.well-known/oauth-protected-resource/mcp | GET | 本体资源路径兼容发现 |
| /.well-known/oauth-protected-resource/mcp/business | GET | 业务 MCP 资源发现 |
| /.well-known/oauth-authorization-server | GET | 授权服务器元数据 |
| /oauth/register | POST JSON | 动态注册 public client |
| /oauth/authorize | GET 或 POST form | 登录 选择资源并确认授权 |
| /oauth/token | POST form | 授权码兑换和轮换刷新 |
| /oauth/revoke | POST form | Token 吊销 |
| /oauth/grants | GET | 已登录用户查看授权连接 |
| /oauth/grants/revoke | POST form | 按原页面流程撤销连接 |
授权顺序
- 读取受保护资源元数据与授权服务器元数据。无 Token 请求返回的 401 及 WWW-Authenticate 会指向资源发现地址。
- 注册或使用客户端身份。r56 的动态注册 public client 使用 token_endpoint_auth_method=none;不能用客户端密钥替代 PKCE。
- 生成随机 state 与 code_verifier,计算 S256 code_challenge。
- 打开元数据指示的 authorize 地址,传 response_type=code、client_id、精确 redirect_uri、scope、resource、state、code_challenge 和 code_challenge_method=S256。
- 用户在 DataFocus 登录并选择本体或业务系统。客户端不能预先选入用户无权访问的资源。
- 接收回调,验证 state 和 issuer;使用原 code_verifier 兑换授权码。
- 仅把 access_token 用于 MCP Bearer 认证。刷新使用原 OAuth 流程,安全保存轮换后的 refresh_token。
注册示例
{
"client_name": "OT Flash Knowledge Client",
"redirect_uris": ["http://127.0.0.1:8765/callback"],
"application_type": "native",
"token_endpoint_auth_method": "none",
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"]
}Web 客户端回调使用 HTTPS;native 客户端可使用受支持的回环地址。授权与换 Token 都按登记的回调精确匹配。一个 Grant 面向一个 protected resource,不把本体 scope 与业务工作台 scope 混在同一连接。
Token 生命周期
r56 服务端缺省 access token 为 3600 秒、refresh token 为 2592000 秒、授权码为 300 秒,部署可以覆盖这些值。客户端必须使用 token 响应的 expires_in 和实际错误判断,不将缺省值写死。刷新后更新 Token;撤销角色、资源权或 Grant 会使后续调用被拒绝。
Scope 资源边界与实时权限
授权范围委托现有权限,不授予角色提升,也不跨 Grant 共享业务状态。
| Scope | 典型能力 | 重要约束 |
|---|---|---|
| ontology.metadata:read | 本体 资源 表结构 | 本体及表必须在授权和当前可读范围内 |
| ontology.graph:read | 图谱搜索和邻居 | 返回定位信息,不是事实证据 |
| ontology.knowledge:read | 知识定位和完整原文 | 保留知识库和文档原权限 |
| ontology.table:query | 本体表 SQL 及发布模型查询 | 表查询还需要 metadata scope;实际来源和列权继续生效 |
| search:operate | 原生关键词模型与会话 | 独立明确委托,按原模型和用户表列权限执行 |
| etl:operate | Flash ETL capabilities | 不开放 Heavy ETL |
| authoring.contract:read | 条件开放的建模契约 | 还需功能开关和相关资源 |
| authoring.artifact:read | 候选与计划等当前授权读取 | 绑定原主体 Grant 和资源 |
| authoring.artifact:draft | 候选提交 预览等 | 不授权执行或发布 |
| authoring.artifact:apply | 受控计划与应用 | 仍需原业务角色 策略与审批 |
| execution.script:draft | 特定脚本草稿 | 不授权实际脚本执行 |
| datasource.http:read / draft / test / import | 条件开放的 HTTP 数据源制品能力 | 每项独立开关和原权限 |
读取组合要求
dfc_table detail 要求 ontology.metadata:read;query 另要求 ontology.table:query。dfc_ontology_query 要求 graph 与 knowledge 两个读取 scope。dfc_knowledge_search/detail 要求 knowledge。published_model/published_query 走 table:query;candidate_query 还需 authoring.artifact:read。分析工具还检查允许的证据 scope;持久报告要求 metadata 与 table query。
默认授权不要硬编码
r56 的本体默认 scope 集合包含 table query;Search 和 ETL 是显式委托。最终仍以发现元数据、授权页、实际 Token scope 和 tools/list 为准。旧文档中“本体默认一定没有 SQL”或“只有六个工具”的说法不能作为当前实现依据。
状态隔离
会话、报告、候选和动作计划都有自己的所有者与范围。access token 刷新不会把原 Grant 的工作交给另一个 Grant。不要把另一连接返回的 sessionId、reportId、planId、审批令牌或来源 Token 合并到当前连接。
HTTP 与现代 MCP 报文
正确发送逐请求元数据和匹配的路由头,分别处理 HTTP 与工具结果。
| 项目 | r56 行为 |
|---|---|
| 传输 | 无状态 Streamable HTTP,POST JSON-RPC |
| 支持标识 | 2026-07-28 以及 2025-11-25 2025-06-18 2025-03-26 |
| 现代方法 | server/discover tools/list tools/call resources/list resources/read,按实际能力开放 |
| 会话头 | 不分配 Mcp-Session-Id |
| GET 与 DELETE | /mcp 和 /mcp/business 返回 405 |
| 服务端 SSE 通知 | 这两个公共 MCP 入口不提供 |
| 目录缓存 | 现代发现及列表返回 ttlMs=60000 与 cacheScope=private |
| 普通结果 | 现代结果包含 resultType=complete 与服务身份元数据 |
必须匹配的内容
- MCP-Protocol-Version 与 params._meta 中 io.modelcontextprotocol/protocolVersion 一致。
- Mcp-Method 与 JSON-RPC method 一致。
- tools/call 的 Mcp-Name 与 params.name 一致;resources/read 的名称头与 URI 一致。
- 每个现代请求都携带 io.modelcontextprotocol/clientCapabilities 对象;同时提供标准 clientInfo 便于客户端识别。
调用示例
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "dfc_ontologies",
"arguments": {"page": 1, "pageSize": 20},
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientInfo": {"name": "flash-client", "version": "1.0.0"},
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}对应 HTTP 头为 Mcp-Method: tools/call 和 Mcp-Name: dfc_ontologies。所有例子中的 ACCESS_TOKEN 都是占位符。不要将 Bearer Token 放进 URL、JSON 参数或缓存键。
结果读取
先处理 HTTP 状态,再检查 JSON-RPC error;有 result 时继续检查 isError。成功工具结果通常提供 structuredContent,同时有包含相同业务 JSON 的 text 内容;优先读取结构化通道,避免把 text 和 structuredContent 当作两份独立事实重复汇总。HTTP 200 可能携带工具失败。
公共资源与 UI
内置说明资源不依赖 MCP Apps。业务工作台入口不因此获得本体说明资源。支持可视化的客户端应通过实际能力与工具 _meta 发现对应 UI,不猜测未返回的资源 URI。
旧协议客户端兼容
在仍使用初始化握手的客户端中保持一致的协议时代。
{
"jsonrpc": "2.0", "id": 1, "method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": {"name": "flash-legacy-client", "version": "1.0.0"}
}
}- 发送 initialize,读取服务端协商的协议版本与 capabilities。
- 按客户端协议发送必要的初始化完成通知;通知没有普通工具结果。
- 使用 tools/list 读取当前授权工具,再发送 tools/call。
- 保持当前请求时代的头和报文一致,不向 2026-07-28 报文发送旧 initialize 或 ping 流程。
旧协议仍使用相同 Bearer/OAuth、权限和工具合同。它不意味着服务器一定提供旧式 SSE 长连接或 Mcp-Session-Id;r56 的公共服务保持无状态。
协议错误
| 情况 | 典型结果 | 处理 |
|---|---|---|
| 现代头与报文不一致 | HTTP 400 JSON-RPC -32020 | 修正头 元数据及工具名 |
| 不支持的版本 | -32022 并提供支持版本列表 | 选择实际支持的协议 |
| 未知方法 | JSON-RPC -32601,现代请求可能 HTTP 404 | 检查协议时代与方法 |
| 缺少参数或非法参数 | JSON-RPC 参数错误或工具 isError | 按实际 inputSchema 修正 |
选择正确工具与证据通道
根据未解决的业务问题路由,不用固定调用链重复取证。
| 任务 | 首选工具 | 完成所需证据 |
|---|---|---|
| 发现授权主题与资源 | dfc_ontologies dfc_ontology_resources | 实际资源 ID 类型及当前可见范围 |
| 表格统计与 TopN | dfc_table query | 成功执行回执及完整 evidenceRows |
| 查制度 合同或报告 | dfc_ontology_query 或 knowledge search/detail | 完整 授权 可用于事实的原文 |
| 定位图谱对象 | dfc_ontology_graph search/neighbors | 定位到实际来源,再取得对应事实 |
| 原关键词交互 | dfc_manual 然后 dfc_search | 原模型与业务帧中的实际结果 |
| 融合分析与报告 | dfc_analysis_* 或 dfc_report_* | 各结构化分支与文档证据的真实状态 |
| 修改展示或本体模型 | dfc_authoring_* 与 artifact 工具 | 候选 计划 审批和实际应用分别核对 |
| 执行业务命令 | /mcp/business 的 dfb_* | 已发布契约与原 ActionPlan 回执 |
避免不必要的调用
已有当前、完整、授权的表结构时,不要求每次查询重新 detail;已有可信定位与证据时,不重复同一检索。需要某个缺失维度时做有界补查。失败明确不可重试时先解决缺口,不用“再试一次”替代判断。
Flash 的排除项
dfc_etl capabilities 可返回 available=false 及 ETL_NOT_INCLUDED_IN_OT_FLASH。内置 ETL 函数静态说明用于跨产品参考,不证明 Flash 安装了 ETL,也不允许 Agent 自动转到 Heavy 或其他租户执行。
本体资源与 ID 类型
先取得实际资源坐标,防止把存储名、文档 ID 和知识库 ID 混为一谈。
- 调用 dfc_ontologies,按 page 和 pageSize 浏览本次授权且当前仍可读的本体。
- 用真实 ontologyId 调用 dfc_ontology_resources;按需要选择 tables、answers、pinboards、documents 和 knowledgeBindings。
- 对每种资源分别处理分页。pageSize 最大 100;不要以第一页推断整个资源范围。
- 保存资源声明的类型及原始 ID,后续调用原样使用。
{"name":"dfc_ontology_resources","arguments":{
"ontologyId":"<ONTOLOGY_ID>",
"resourceTypes":["tables","documents","knowledgeBindings"],
"page":1,"pageSize":100
}}| 坐标 | 来源 | 不能替代 |
|---|---|---|
| ontologyId | 授权本体列表或当前有效上下文 | 另一本体的 ID |
| 表资源 id | tables 列表或可信上下文 | physicalName 或显示表名 |
| tblDisplayName colDisplayName | 当前表与列元数据 | 猜测的物理 SQL 标识符 |
| knowledgeId | knowledgeBindings 或实际知识检索回执 | 文档资源 id |
| assetId documentId chunkId evidenceId | 同一个实际定位回执 | 从不同定位结果拼接的字段 |
| rid revisionId releaseId | 已发布模型或服务端候选上下文 | 自行生成的 ID 或 latest |
精度约定
所有 64 位资源标识优先用十进制字符串,JavaScript 不经 Number 转换。部分业务 Schema 兼容 string 或 integer,不等于可以舍弃整数精度。opaque locator、UUID、哈希及一次性令牌也按原样保存。
Doris 表查询与结构合同
在授权表上执行只读 SQL,并保留输出语义、精确数值和完整性。
读取结构
{"name":"dfc_table","arguments":{
"action":"detail","ontologyId":"<ONTOLOGY_ID>","id":"<TABLE_RESOURCE_ID>"
}}detail 使用真实表资源 ID。核对 schemaComplete、tblDisplayName、columns 中的 colDisplayName 和权威 sqlDataType,以及返回的 queryContract。dataType 仅是兼容映射,物理存储名不是提交 SQL 的表名。
执行查询
{
"name": "dfc_table",
"arguments": {
"action": "query",
"ontologyId": "<ONTOLOGY_ID>",
"sql": "SELECT \"区域\", SUM(\"销售金额\") AS \"销售金额合计\" FROM \"电商销售数据\" WHERE \"订单状态\" = '已完成' GROUP BY \"区域\" ORDER BY \"销售金额合计\" DESC",
"maxRows": 100
}
}SQL 约束
- 使用显示表名和显示列名,以双引号引用标识符。请求是一条本体范围内的只读 Doris 查询。
- 显式列出输出,禁止 SELECT * 和 table.*;它们不能通过物理列绕过注册列权限。
- 关联使用明确 JOIN ... ON;NATURAL JOIN 和 JOIN USING 会拒绝。
- 可以使用合法的多维聚合、CTE、窗口、CASE、COUNT(DISTINCT ...) 等只读表达式;语义验证未覆盖某表达式,不等于统一禁止执行。
- 先在 SQL 中完成聚合、排序和排名,再施加结果上限。maxRows 默认为 100,最大 200。
日期与时区
| 类型或目标 | 形式 | 注意 |
|---|---|---|
| DATE | CAST('2026-09-01' AS DATE) 与 CURRENT_DATE | 不能直接拿文本字面量假定日期类型 |
| DATETIME | CAST('2026-09-01 00:00:00' AS DATETIME) 与 CURRENT_TIMESTAMP | 核对来源时区和会话时区 |
| 相对时间 | DATE_SUB(CURRENT_DATE, INTERVAL 1 YEAR) | 日期与时间戳使用对应当前函数 |
| 时间分组 | YEAR(column) 或 DATE_TRUNC(column, 'month') | 每个输出使用唯一别名;以 queryContract 为准 |
SQLite 的 DATE('now', ...) 不是此入口的 Doris 日期合同。不要把文档示例的 SQLite 离线核对方式放入线上 SQL。
读取 v8 查询回执
evidenceRows 是 Agent 面向行数据的唯一通道,raw data 不对 Agent 开放。SQL 数字以精确十进制 JSON 字符串编码;通过 resultColumnContracts 判断其数值和业务类型,不因为 JSON 是字符串就解释为 VARCHAR。读取 executionReceipt、完整性和截断信息,保留 evidenceRowsSha256 等来源信息。
有可引用执行回执的查询输出可以按原样引用;只有服务端验证过的语义,才能授权后续确定性二次计算。不能根据字段名猜“累计余额”“期末值”“币种”或自行补单位。零行结果、失败或截断不能被描述为完整统计。
多维 Top3 与截断处理
以服务端聚合和窗口函数回答排名,不在不完整结果上二次计算。
配套 examples/top3.sql 使用示例表,先按区域、类别和产品聚合,再在各区域与类别内执行 ROW_NUMBER,并使用产品名作为金额并列时的稳定顺序。请求 maxRows=100 足以容纳示例的 36 行;其他业务数据需要按真实组数评估。
- 取得真实结构和当前口径,明确币种、期间、订单状态及并列规则。
- 提交服务端聚合与排名 SQL。不要先只查询区域总额,再将它当作类别产品排名。
- 检查输出列合同与实际 evidenceRows,确认返回覆盖全部需要的组。
- 发现截断时,按服务端支持的边界做有界分区查询,例如按区域分别取得完整 Top3;每次保持同一业务口径。
- 如果来源期间发生变化,重新查询并明确新版本,不混用不同数据版本或失效游标。
错误恢复
TABLE_SCHEMA_INCOMPLETE 应修正或取得完整结构;ONTOLOGY_SQL_FAILURE_CONTRACT_INVALID 等失败按返回的 errorCode、retryable、remediation 处理。不要声称“所有多维 GROUP BY 或窗口函数都被禁止”,也不要在没有查询结果时编造排名。
知识检索 完整原文与证据资格
把定位、读取和事实引用分开,并保留出处与完整性。
两种常用路径
| 路径 | 用途 | 要点 |
|---|---|---|
| dfc_ontology_query | 在本体绑定知识内检索并可结合图谱路由 | 检查完整 canonical answerContextItems 与证据资格 |
| dfc_knowledge_search → dfc_knowledge_detail chunk | 显式搜索定位,再读取所选分片 | 搜索预览不作为事实;读取同一定位的完整原文 |
{"name":"dfc_knowledge_search","arguments":{
"ontologyId":"<ONTOLOGY_ID>","query":"销售金额是否排除退货", "topK":5
}}
{"name":"dfc_knowledge_detail","arguments":{
"action":"chunk","ontologyId":"<ONTOLOGY_ID>",
"evidenceId":"<EVIDENCE_ID_FROM_THE_SAME_SEARCH_RESULT>"
}}可用于事实的条件
- 检查当前 ACL、内容完整性及服务端的 canonicalFactEligible、citationEligible 或相应执行合同。
- 完整内容与 contentSha256 绑定。截断、预算省略或低质量内容需按实际字段处理。
- 文档元数据、page_context、图谱定位、检索摘要和预览均不能替代 canonical 原文。
- 优先复制 evidenceId;需要 chunkId 与 documentId 时,必须来自同一条定位结果,不拼接或猜造。
图谱路由
search/neighbors 结果是定位信息。仅把服务端完整返回的 routeLocator 对象交给本体 query,包括绑定、版本和证明字段。不要把一个 assetId 或 knowledgeId 自行包装成服务端签发的 locator,也不要回传模型断言的来源证明。
结构化文档恢复
dfc_ontology_query 的 structuredPlan 是专门用于不规则文档表格的受限恢复与确定性校验。仅在返回当前 executionContractSha256、tableIndex、列与完整表格后使用服务端声明的计划。普通已导入业务表应走 dfc_table SQL;不要把 Markdown 表格恢复当作绕过表查询授权的通道。
检索策略
knowledgeIds 通常省略以覆盖当前启用绑定;传入时仅使用 knowledgeBindings 的真实知识库 ID。不要把文档资源 ID 当作知识库 ID。按未解决问题做新的有界搜索,避免精确重复且没有新增证据的检索。
原生 Search 模型与会话
通过 dfc_search 使用 Rust Search 的关键词协议,等待原业务帧终态。
先读说明再发现能力
{"name":"dfc_manual","arguments":{
"action":"read","uri":"datafocus://manuals/search-keyword-queries/v1"
}}
{"name":"dfc_search","arguments":{"action":"capabilities"}}dfc_search 需要明确的 search:operate。它包装原关键词 WebSocket,不把关键词重写成 SQL 或 LLM 请求。会话绑定当前租户、用户、Grant、客户端和模型,操作时重新检查原表列权限。
最小会话流程
{"name":"dfc_search","arguments":{
"action":"model_create","data":{"tableIds":["<ACTUAL_TABLE_ID>"]}
}}
{"name":"dfc_search","arguments":{
"action":"open","data":{"sourceToken":"<MODEL_SOURCE_TOKEN>","language":"en-US"}
}}
{"name":"dfc_search","arguments":{
"action":"poll","data":{"sessionId":"<SEARCH_SESSION_ID>","waitMillis":10000}
}}
{"name":"dfc_search","arguments":{
"action":"request","data":{"sessionId":"<SEARCH_SESSION_ID>",
"message":{"type":"assist","datas":{}}}
}}
{"name":"dfc_search","arguments":{
"action":"request","data":{"sessionId":"<SEARCH_SESSION_ID>",
"message":{"type":"search","datas":{"search":"<QUERY_USING_ACTUAL_COLUMNS>","ambiguities":[]}}}
}}- model_create 使用 1 至 100 个真实有权表 ID,或 model_read 读取本人已有的 sourceToken。
- open 仅返回 initializationSent;先 poll,读取原 init 业务响应并确认成功。
- 读取 assist 与建议,再发送受支持的原 message。query datas 中 isNl 由包装器固定为 false。
- 持续读取 frames,区分建议、解析、接收和最终业务结果。
- 结束时 close;需要取消时 cancel,并按真实任务状态核对是否终止。
| action | data | 含义 |
|---|---|---|
| capabilities | 省略或空对象 | 读取动作 命令 TTL 及传输说明 |
| model_create | tableIds 数组 | 创建当前用户的授权模型 |
| model_read | sourceToken | 读取模型,过滤无权列和敏感源配置 |
| open | sourceToken 与可选 language | 建立原生会话并发送 init |
| request | sessionId 与 message | 发送原 type/datas 协议消息 |
| poll | sessionId 与 waitMillis 0 至 30000 | 取走当前缓冲帧并可有界等待 |
| cancel close | sessionId | 关闭这个原生会话,不能断言 BI 终态 |
支持的原命令
search associateSearch guide assist exportContext reInit
putFormula modifyFormula deleteFormula fnamecheck
disambiguite reDisambiguite clearDisambiguite命令的大小写和 datas 结构采用当前 capabilities 与原会话协议。不能把不存在的动作补进 request;例如 disambiguite 的拼写必须按实际协议保留。消息最大为 256 Ki 字符。
会话与完整性
会话 TTL 为 10 分钟,仅在当前进程存活期保留;并非可持久恢复任务。缓冲最多 256 帧且受内存上限约束,bufferOverflow=true 时不能把已取帧当作完整结果。传输错误后先 poll 原会话,不盲目重发可能已执行的查询。
当前包装器未提供答案或看板保存、历史读写和任意上下文恢复。exportContext 的存在不意味着可以自行恢复任意上下文。需要保存结果时使用实例实际开放的原资源能力,不能猜造 action。
语言与区域约定
保持 UI locale、查询词典、返回语言及原字段名称之间的边界。
优先级为明确请求语言、应用系统语言、实际执行节点 locale。缺省、null、空字符串和空白不会固定回退中文。languageRegistry 中的区域值应保持精确,不能把 en-GB、fr-CA、pt-BR、es-US 或 ar-AE 随意折叠成另一个地区。
| 语言或地区 | 查询 locale | 说明 |
|---|---|---|
| 简体中文 繁体中文 | zh-CN zh-Hant | 原中文规则与繁体目录不同 |
| 美国 英国 澳洲 加拿大英语 | en-US en-GB en-AU en-CA | UI/关键词包可共用,地区元数据保留 |
| 德语 意大利语 俄语 | de-DE it-IT ru-RU | 按当前会话建议使用 |
| 西班牙及拉美西语 | es-ES es-US | 产品地区 ID 为 es-US |
| 法国及加拿大法语 | fr-FR fr-CA | 地区 ID 不合并 |
| 葡萄牙及巴西葡语 | pt-PT pt-BR | 目录和地区约定分别保留 |
| 荷兰 丹麦 挪威 芬兰 瑞典语 | nl-NL da-DK nb-NO fi-FI sv-SE | 挪威语为 Bokmål |
| 日语 韩语 | ja-JP ko-KR | 不按英语空格规则自行分词 |
| 沙特及阿联酋阿拉伯语 | ar-SA ar-AE | 界面说明支持 RTL,协议标识符不反转 |
使用关键词目录
{"name":"dfc_manual","arguments":{
"action":"keywords","locale":"de-DE","names":["<ACTUAL_KEYWORD_ID>"]
}}dfc_manual 的静态关键词目录只有明确列出的 locale,省略时使用英语参考;这是参考默认值,不是查询语言解析规则。地区变体未提供静态目录时,通过当前会话 assist 获取实际建议,不伪造别名或回退结果。单次 names 最多 32 项。
不翻译的内容
- 表、列、枚举值、客户名、公式名及其他真实模型字符串。
- 工具名、action、scope、Schema 字段、错误码与状态值。
- 资源 ID、哈希、opaque locator 和服务端签发的引用。
例如德语问题可以查询中文显示列“销售金额”。把它改成一个德语列名,会变成另一条标识符,而不是界面翻译。更换语言后重新初始化或按原协议更新会话,并重新获取建议和歧义候选。
融合分析与交互式结果
在条件开放的分析工具中,保留授权、版本、分支与证据状态。
dfc_analysis_* 由 datafocus.mcp.analysis.tools.enabled 控制。结构化部分继续走 Search 权威查询与当前行策略;文档部分重新取得当前 ACL 下的完整原文。它们不是开放 SQL、任意指令或任意过滤器注入入口。
| 工具 | 用途 | 必要坐标 |
|---|---|---|
| dfc_analysis_ask | 提出自然语言分析问题 | ontologyId question,可选 language sessionId |
| dfc_analysis_result_get | 读取返回过的结果 | ontologyId sessionId resultId |
| dfc_analysis_refine | 基于最新完整结果追问或变更 | 原结果 expectedRevision 与稳定幂等键 |
| dfc_analysis_page | 取得服务端分支的一页 | 原分支与结果版本 pageNo pageSize |
| dfc_analysis_cancel | 取消仍在工作的结果 | 原会话与结果 |
| dfc_analysis_close | 释放非工作状态会话 | 原会话 |
发起分析
{"name":"dfc_analysis_ask","arguments":{
"ontologyId":"<ONTOLOGY_ID>",
"question":"按区域分析已完成订单销售金额,并引用退货统计口径",
"language":"zh-CN"
}}- 读取返回的 sessionId、resultId、状态与 revision;需要时继续读取原结果。
- 逐个检查结构化分支的状态、完整性、行策略和来源,不以一个分支完成代表整次分析完整。
- 检查文档证据、事实账本、引用资格与局限。模型生成叙述不能独立升级证据资格。
- 需要追问时,基于最新完整结果并传 expectedRevision;同一变更重试复用同一幂等键。
- 关闭前确认会话不再工作;取消与关闭是不同动作。
受控筛选与分页
filter_patch 使用服务端给出的 branchId、fieldRef、valueRef 和允许操作符;当前类型化筛选只声明 EQ。禁止用原始 SQL、tableId、columnId 或客户端私造过滤树替换 opaque 引用。分页 pageNo 从 1 开始,最大 10000;pageSize 最大 100。
能力提示与行为
工具 annotations 是客户端提示,不是安全授权。部分通用模板使用 readOnlyHint,并不能代替对实际动作的判断;取消、关闭和创建报告会改变相应工作状态。始终按工具语义、用户目标与服务端权限执行。
持久可视化报告与 MCP Apps
创建可恢复报告,并按当前权限读取其结果与交互界面。
dfc_report_* 由 datafocus.mcp.analysis.report-tools.enabled 控制,并要求 metadata 与 table query scope。它与进程内 Search 会话不同,报告使用持久 reportId;持久不表示不再检查权限。
{"name":"dfc_report_create","arguments":{
"ontologyId":"<ONTOLOGY_ID>","goal":"比较区域与类别销售表现并核对口径",
"title":"零售经营分析","language":"zh-CN",
"idempotencyKey":"retail-report-20261019-01"
}}
{"name":"dfc_report_status","arguments":{
"ontologyId":"<ONTOLOGY_ID>","reportId":"<REPORT_ID>"
}}工作流
- 创建时使用稳定的 idempotencyKey,长度 8 至 128 个受支持字符。
- 保存 reportId,轮询 status,并检查完成、失败、部分完成或取消等实际状态。
- 读取结果时核对结构化分支、可视化、事实来源、文档引用和完整性。
- 取消未完成报告用原 reportId;不要创建另一份报告代替取消。
- 网络超时后先读取原报告状态;原幂等键重放应保持同一业务意图。
MCP Apps
支持 UI 扩展的客户端,通过工具 _meta 与实际资源发现读取报告页面。r56 对应的持久报告页面为 ui://datafocus/analysis-report/v16/index.html,交互分析使用相应的服务端资源引用;客户端不应硬编码取代工具返回值。没有 UI 扩展时仍可读取结构化结果。
来源绑定
报告读取重新检查 Grant、本体、请求 Origin 绑定及当前表权限。浏览器跨来源集成需使用批准的实际来源;客户端不通过伪造 Origin 绕过绑定。旧 reportId 不是长期公开链接,也不是跨用户访问凭据。
制品草稿 预览 计划与应用
把生成内容交给原服务端规范化、验证和审批,不让模型直接改生产资源。
制品工具需要 authoring 功能开启、实际 artifact type、相关 scope 与原管理员写权限。缺省类型配置为 CONTROL_PANEL_SPEC 和 VIEW_SPEC;其他表单、HTTP 来源或脚本类型还受独立配置控制。Flash 没有 AutoML,因此不把相关类型列为本版本可用制品。
- dfc_authoring_capabilities 读取当前 Grant 可用的合同与动作。
- dfc_artifact_context 取得有界上下文、contractVersion、contextHash、baseArtifactHash 和 baseArtifactVersion。
- 在客户端根据真实合同生成候选,不执行其中的代码。
- dfc_artifact_submit 提交原上下文与候选,保持 instruction 相同,并使用稳定 clientRequestId。
- 读取 proposalId、candidateHash、校验和预览;有实际错误时修订候选,不伪造服务端通过状态。
- 需要重新预览时,使用 dfc_artifact_preview 和相同候选哈希。
- dfc_artifact_plan 创建不可变计划,使用真实候选、目标版本和幂等键。
- 按原交互审批或已获授权的策略处理批准,再 dfc_artifact_apply;只有 APPLIED 回执代表实际应用。
最小上下文请求
{"name":"dfc_artifact_context","arguments":{
"artifactType":"CONTROL_PANEL_SPEC",
"ontologyId":"<ONTOLOGY_ID>",
"instruction":"为当前授权销售指标建立区域比较面板"
}}VIEW_SPEC 使用当前授权 projectId;编辑已有制品时使用实际 artifactId。variables、previewInput、viewport 等字段按返回合同提供,不猜造候选内部结构。
并发与重试
计划绑定目标版本、候选哈希及幂等键。目标变化后,旧计划不能继续应用;重新读取上下文并按实际冲突处理。transport timeout 不证明失败,先用 dfc_artifact_status 查询原 proposalId 或 planId。READY 不是 APPLIED。
批准与自动策略
通用制品计划需要原人工审批。符合本体自动发布政策的计划按 approvalMode 处理,不要求用户另签一份代理发明的批准。approvalToken 是服务端签发材料,不能由 Agent 写一个字符串替代;实际 inputSchema 与计划回执决定必填字段。
本体候选创建与发布合同
使用独立版本的本体声明与发布配置,不把普通展示制品合同套到模型发布。
创建候选
本体容器必须已经存在并在 Grant 内。使用 dfc_ontology_table_schema 检查当前结构化来源字段与 v4 Binding 指纹;字段可只提供 sourceField 自动发现类型。显式 DECIMAL 声明需要当前精度与小数位,其他类型不携带这两个字段。
{"name":"dfc_ontology_table_schema","arguments":{
"ontologyId":"<ONTOLOGY_ID>","sourceAssetRef":"table:<ACTUAL_TABLE_ID>",
"fields":[{"sourceField":"区域"},{"sourceField":"销售金额"}]
}}候选与发布配置
| 合同 | 用途 | 关键边界 |
|---|---|---|
| ontology-workspace-create-mcp-submit-v1 | 以本地声明创建候选 | 真实授权来源 服务端编译,不接受完成证明 |
| ontology-workspace-create-mcp-submit-v2 | 混合本地和精确已发布引用 | 提供精确 releaseSelections 及闭包依赖 |
| ontology-publication-mcp-submit-v1 至 v3 | 把已有候选绑定到发布计划请求 | 显式坐标,目标 来源 审批和校验由服务端恢复 |
| ontology-publication-mcp-submit-v4 至 v6 | 单独启用的自动发布相关配置 | 只有 capabilities 与实际 schema 声明时使用 |
| ontology-initial-activation-retirement-submit-v1 | 受控初始激活退休操作 | 独立计划 新的人工批准与精确范围 |
发布顺序
- 取得当前候选 workspaceId、workspaceRevision、candidateHash 及实际来源。
- 依照服务端能力选择合同版本;提交 releases 与 selection 等坐标,不附带自称“已批准”“已通过”的字段。
- 保留 submit 返回的 proposalId 和原 idempotencyKey。submit 与 MODEL_PLAN 是同一请求的不同阶段。
- 调用 dfc_artifact_plan,使用原候选、目标版本和同一幂等键。
- PLANNING_INCOMPLETE 只表示尚未形成有效计划;VALIDATION_UNSATISFIED 表示当前校验仍有缺口,按 nextAction 处理。
- 计划成功后根据 HUMAN_REQUIRED 或 POLICY_AUTO 继续,使用原审批和发布能力。
- 以 APPLIED 回执和随后真实的已发布模型读取、授权查询确认结果。
超时与恢复
PLAN 超时后读取原 proposalId。MODEL_PLAN_SUBMITTED 是未完成请求;MODEL_PLAN_COMPLETED 表示应以原坐标和原键恢复原回执,不是让客户端另造一条新请求。终态校验缺口不能靠换键或重复提交变成发布通过。
人类业务权限
Agent 提供的 instruction 和声明属于 Agent 输入,不是人类政策签署。MODEL_AUTHOR、MODEL_PUBLISH、自动发布委托、业务确认、公钥信任、预算和来源 ACL 继续由原机制决定。不得以客户端字段替代这些事实。
发布模型 候选查询与引用闭包
按精确版本使用已发布业务知识,并保留未发布候选的临时性。
dfc_ontology_graph 的 published_model、published_query 与 candidate_query 是条件开放的结构化配置,不是普通 search/neighbors 的同义词。它们按 table query 及必要的建模读取权限授权,不能以图谱可见性替代表权限。
读取已发布模型
- 当工具 action 枚举实际包含 published_model 时,提交真实 committed releaseId。
- v1 返回授权查询模板;v2 增加精确 PERSISTED 引用和 releaseSelections;v3 增加依赖引用、精确 domainRef 及紧凑绑定模板。
- 从实际返回值选择对象、属性、Binding、scope 和版本,不生成 RIDs 或使用 latest。
- 提交 published_query 的固定类型化查询;结果仍需通过当前来源与字段授权。
候选查询
candidate_query 使用实际 workspaceId、revision、candidateHash 和候选声明。混合已发布引用时使用对应 v2 类型化 LOCAL/PERSISTED 坐标及精确选择。候选结果始终是未发布、临时的,不当作企业已确认知识。
局部维护与闭包
只选择候选根所需的传递依赖,并保证每个已发布引用都有精确 releaseSelections。复制发布正文、只提交一组 ID 或扩大到所有历史资源,都不能替代当前依赖与来源检查。
这些 action 的 query 是版本化类型对象,不接受 SQL、物理表 ID 或来源表名替代其业务引用。元数据模板和图谱结果本身不具有事实引用资格。
委托本体智能体任务
使用持久任务与原 Grant 恢复工作,不将 Agent 指令当作人类批准。
dfc_ontology_agent 仅在实际 Pi Runtime 和相关权限可用时显示。QUERY 使用读取能力;AUTHORING 还要求建模角色与对应 authoring scope。它不开放另一套无约束执行引擎。
{"name":"dfc_ontology_agent","arguments":{
"contractVersion":"ontology-agent-task-v1","action":"start",
"ontologyId":"<ONTOLOGY_ID>","mode":"QUERY",
"instruction":"列出当前可查询的表,并说明各表用途",
"idempotencyKey":"retail-discovery-01"
}}
{"name":"dfc_ontology_agent","arguments":{
"contractVersion":"ontology-agent-task-v1","action":"status",
"ontologyId":"<ONTOLOGY_ID>","runId":"<RUN_ID>"
}}严格参数集
start 使用 contractVersion、action、ontologyId、mode、instruction、idempotencyKey;status/cancel 使用 contractVersion、action、ontologyId、runId。服务端按 action 检查精确字段集合。instruction 最多 16000 字符;键为 1 至 128 个受支持字符且首字符为字母或数字。
恢复与取消
- 保留原 runId、Grant、mode 和幂等键。
- 同一键与相同 instruction 恢复同一 run,不重新提交另一个任务;相同键换指令会拒绝。
- status 查询原任务状态。完成后仍需核对其表查询、证据或发布回执。
- 取消使用原 runId;以实际任务状态确认结果。
run 完成不是模型发布回执。发布任务仍通过原 artifact 状态及来源检查确认;QUERY 没有隐含的写入或发布权。
业务工作台 MCP
基于已发布业务契约查询记录,并通过原 ActionPlan 执行命令。
/mcp/business 使用独立 protected resource 和业务系统选择,不能复用本体 Grant 代替业务授权。业务系统需要已发布、可供 Agent 调用、满足原安全策略,且当前用户有实际运行时角色和能力。
| Scope | 工具 | 边界 |
|---|---|---|
| business-system:discover | dfb_systems dfb_system_describe | 只发现本次授权且当前可调用系统 |
| business-system:read | dfb_query dfb_record dfb_work_items dfb_action_status | 当前用户可读记录与本人计划 |
| business-system:plan | dfb_action_plan | 仅创建不可变计划,不执行 |
| business-system:execute | dfb_action_execute | 独立明确授权,按风险及审批执行 |
- dfb_systems 发现授权系统。
- dfb_system_describe 读取当前发布契约、releaseId 及所有哈希、查询和命令。
- dfb_query 使用已发布 queryKey,按需要指定 objectKey、state、page 和 pageSize。它不是任意 SQL。
- dfb_record 与 dfb_work_items 读取当前允许的记录和待办。
- 执行前用 dfb_action_plan 提供实际 releaseId、releaseHash、canonicalIrHash、agentManifestHash、commandType、planIdempotencyKey 与合同 payload。
- 核对 riskClass、requiresApproval 和 status;涉及目标记录时保留 expectedRecordVersion。
- dfb_action_execute 仅执行当前连接拥有且已就绪的计划,人工要求的审批令牌由 DataFocus 发出。
- 失败或超时后 dfb_action_status 恢复原计划;重试保持原幂等语义。
连接与版本绑定
计划与当前 Grant 的稳定隔离 ID 绑定。Access Token 刷新后仍可处理同一连接的计划,另一 OAuth 连接不能接管它。执行时重新检查发布版本、IR/manifest 哈希、目标记录版本、计划过期、幂等和审批。OAuth allowlist 不能绕过业务治理。
业务知识输入与待确认问题
在对应生产处理器开放时登记业务输入,并保留人类确认边界。
以下四个工具由公共 MCP 控制器按已安装处理器和当前 scope 条件加入。它们不在基础目录中始终出现。声明 Schema 的存在不代表实例已配齐处理器、预算或权限,必须先检查 tools/list。
| 工具 | 用途 | 不产生的授权或效果 |
|---|---|---|
| dfc_ontology_knowledge_input_propose | 为已有工作空间登记原业务输入 | 不生成确认问题 不审批 不发布 |
| dfc_ontology_knowledge_input_preview | 从原输入临时预览问题草稿 | 不持久化 不确认 不形成生产回执 |
| dfc_ontology_knowledge_question_submit | 保存 authored 且未确认的问题 | 不自动合并答案 不获得责任权限或发布权 |
| dfc_ontology_business_scope_initialize | 显式初始化一个业务系统消费者范围 | 不发布 不激活 不授予来源访问权 |
输入与预览
- 从实际准备工作中取得 workspaceId、workspaceRevision、localRef 与 preparationDigest。
- propose 使用原 input 合同和稳定 idempotencyKey 登记业务输入;同键只能对应同一输入。
- preview 使用原输入的幂等键和 ontologyId;它每次返回服务端 revision 及 60 秒窗口,不是幂等生产完成回执。
- 需要存储问题时,question_submit 使用新的命令键、原 originalInputKey、明确的 questionRevision、validFrom、validUntil 和 expectedRevision;创建时 expectedRevision 为 null。
人类确认入口
question_submit 返回的 knowledgeConfirmationPage 只是原登录页的相对定位,预填某个问题。它不带 Bearer、不会自动打开页面、不会确认知识。QUESTION_STORED_UNCONFIRMED 明确表示尚未确认,不能在回答中写成“知识已发布”。
消费者范围初始化
business scope initialize 必须同时具备本体发布权,以及精确业务系统的创建者或 SourceManager 管理权。它使用 domainRid、domainRevisionId 和 businessSystemId 的真实坐标,不能由客户端填写任意 consumerScope 或已完成证明。返回 INITIALIZED 与 COMPLETED 仍明确 published=false、activationAuthorized=false。
这些请求还经过严格 JSON、字段集合、字节与深度校验。输入请求上限为 1 MiB;部分具体操作有更小上限。完整输入和输出 Schema 随工具参考交付,不能把一般 MCP 包装器的宽松参数逻辑套到这些严格合同。
响应 错误与安全重试
分层解释错误,保持任务坐标与幂等语义。
| 层次 | 检查内容 | 处理原则 |
|---|---|---|
| 网络与 HTTP | 连接 TLS 401 403 400 404 405 等 | 不要把失败响应当普通查询结果 |
| JSON-RPC | error.code message data | 区分协议 方法 参数和授权问题 |
| MCP 工具 | result.isError 与 structuredContent | HTTP 200 仍可能失败 |
| 业务结果 | 真实状态 完整性 失败原因 nextAction | 收到或就绪不等于完成 |
| 事实资格 | executionReceipt citationEligible contentComplete | 没有资格的内容仅用于定位或解释缺口 |
常见 HTTP 情况
- 401:缺少或失效 Bearer,按当前 OAuth 流程刷新或重新授权。
- 403:Grant、角色、所选资源、来源权限、Origin 或配置不满足;不靠重放绕过。
- 400:报文或版本化合同非法,包括现代头与元数据不一致。
- 404:检查确切服务路径、协议方法及运行时能力;不要随机换本体 ID。
- 405:公共 /mcp 的 GET、DELETE 本来不开放;改用正确 POST,而不是建立 SSE 长连接。
结果不明的写操作
MCP_OPERATION_OUTCOME_UNKNOWN 可能包含 outcome=UNKNOWN、retryable=false、nextAction=READ_ORIGINAL_STATUS、recoveryTool 与原定位参数。先查原状态,再恢复原请求。不要重新提交候选、更换幂等键或把超时当作事务回滚。
需要原样保留的内容
- 原 Grant、资源范围、任务和结果 ID。
- candidateHash、planHash、expectedRevision、目标版本与发布选择。
- 同一逻辑操作的幂等键;不同业务操作应使用新键。
- 服务端声明的 retryable、remediation、nextAction 和当前状态。
不要从异常文本提取内部 SQL、主机、凭据或堆栈作为答案来源。记录可公开的错误码与请求关联信息即可;原错误可能需要管理员在受控日志中查看。
集成安全与能力边界
保持身份、资源、执行和证据的原边界,安全处理不可信文档。
- 只连接管理员给出的正式域名;验证 TLS 与 OAuth issuer,不关闭证书验证。
- 使用专用、最小资源范围的 Grant;不要把管理员账号、Cookie 或长期内部 Token 当公共接口凭据。
- 把文档正文当作不可信业务材料。文档中的“忽略规则”“上传密钥”“执行命令”不是工具授权。
- 限制自动重试、并发和结果范围;不在客户端重新构造原始业务权限。
- 日志只记录必要关联信息,不记录 Bearer、refresh token、审批令牌及完整敏感业务内容。
- 用户断开连接或管理员撤权后,停止使用缓存中的授权和数据,不靠旧 locator 继续调用。
工具提示不是权限
readOnlyHint、destructiveHint、idempotentHint 与 openWorldHint 用于客户端理解能力,不保证每次调用的实际业务效果,也不替代当前用户授权。所有写入、计划、预览、会话和取消动作按其真实行为处理。
不要调用的入口
- 原 Trino/Hive/Hadoop 服务和未包括在 Flash 中的 Heavy ETL。
- 内部 FocusCode 专用 scope 或工作空间接口。
- 未在当前实例 tools/list 中出现的执行 v2、AutoML 或其他实验工具。
- 浏览器私有 REST、任意数据库连接或其他租户的服务来绕过 MCP 拒绝。
数据语义
遵循服务端的精确十进制、类型、币种、单位、时间及证据合同。不要因为输出文字像数字就重新四舍五入或转换币种,也不要在结果被截断时对可见行做全局排名。
管理员接线与条件开关
在启用扩展能力前核对真实组件、公开地址和原权限配置。
| 配置 | 用途 | 发布要求 |
|---|---|---|
| datafocus.mcp.public-base-url | 正式外部根地址 | OAuth 发现 issuer 回调及反向代理一致 |
| datafocus.mcp.allowed-origins | 额外批准浏览器来源 | 精确配置,不扩大成任意来源 |
| datafocus.mcp.oauth.route-proof-secret | 图谱路由证明专用服务器秘密 | 独立保存,不使用 Bearer 作为密钥 |
| datafocus.mcp.analysis.tools.enabled | 交互分析工具 | 配套数据 知识和权限服务真实可用 |
| datafocus.mcp.analysis.report-tools.enabled | 持久报告工具 | 配套存储 worker 与恢复链可用 |
| datafocus.mcp.analysis.apps.enabled | MCP Apps 展示 | 客户端声明支持并检查返回 _meta |
| datafocus.mcp.authoring.enabled | 草稿与建模合同 | 保留原管理员及资源权限 |
| datafocus.mcp.authoring.apply-enabled | 制品应用能力 | 不可变计划 原审批和当前状态重校验 |
| datafocus.mcp.ontology-published-query-enabled | 已发布模型与查询 | 真实已提交版本和来源授权 |
| datafocus.mcp.ontology-candidate-query-enabled | 候选结构化查询 | 候选所有权 精确版本及读取权 |
| datafocus.mcp.authoring.ontology-auto-publication-enabled | 自动发布委托相关授权 | 有效原策略 公钥信任 预算及发布权 |
这些名称来自 r56 配置和实现;是否可以开启取决于配套服务与原上线门禁。只改变布尔值不会补齐缺失的处理器、数据库、验证预算或策略。知识输入扩展及 Pi 任务按实际安装组件决定可见性。
边缘代理
保留 Authorization、Content-Type、MCP-Protocol-Version、Mcp-Method、Mcp-Name 及批准的 Origin。按实际服务要求设置请求体、超时与 TLS;不要将公共 /mcp 转发到管理端口或另一个产品。
上线核对
- 匿名发现与受保护调用的状态符合预期。
- 普通用户只能发现其授权范围,撤权后后续请求被拒绝。
- Search 原生会话、SQL、原文与可选报告各自有真实结果。
- 写入和发布的审批及幂等恢复保持原行为。
- 日志和公开文档不包含私钥 Token Cookie 密码及内部客户资料。
可运行客户端与调用样例
使用配套最小客户端验证报文,不绕过 OAuth 或当前授权。
examples/flash_mcp.py 是仅依赖 Python 标准库的最小协议客户端。它不登录、不代办批准、不自动调用不可见工具,支持现代与旧协议,并按 HTTP、JSON-RPC、工具错误分层退出。Token 通过进程环境输入,不写入脚本或说明文件。
export FLASH_BASE_URL='https://flash.example.com'
read -r -s -p 'Access token: ' FLASH_ACCESS_TOKEN
export FLASH_ACCESS_TOKEN
python3 examples/flash_mcp.py discover
python3 examples/flash_mcp.py tools
python3 examples/flash_mcp.py call dfc_ontologies --arguments '{"page":1,"pageSize":20}'
unset FLASH_ACCESS_TOKEN读取与查询
python3 examples/flash_mcp.py call dfc_ontology_resources \
--arguments-file examples/requests/ontology-resources.json
python3 examples/flash_mcp.py call dfc_table \
--arguments-file examples/requests/table-detail.json
python3 examples/flash_mcp.py call dfc_table \
--arguments-file examples/requests/top3-query.json先把请求文件中的 ONTOLOGY_ID、TABLE_RESOURCE_ID 等占位符替换为当前授权返回的真实值。客户端遇到占位符会拒绝执行。SQL 示例要求配套 CSV 已按原列名导入;没有对应 schema 时不能直接提交。
其他场景
- 业务入口:使用 --endpoint business,重新取得面向 /mcp/business 的 Grant。
- 旧客户端:选择 --protocol 2025-11-25,先 initialize,再按同一协议调用。
- 内置说明:使用 resources 或 read-resource 读取实际 URI。
- 离线自检:--self-test 验证现代头与元数据构造,不需要 Token,也不请求产品服务器。
样例的边界
客户端是协议接入起点,不自动生成建模候选、保存问答或执行发布。它输出原 JSON 以便上层 Agent 核对业务状态;不要仅根据进程退出码向用户承诺查询、报告或发布完成。
嵌入本体对话界面
将人类对话页嵌入业务前端,并保持登录与浏览器安全边界。
<iframe
title="OT Flash ontology agent"
src="https://flash.example.com/10001/#/embed/ontology-agent/1001"
style="width:100%;height:760px;border:0"
referrerpolicy="strict-origin-when-cross-origin">
</iframe>10001 为示例租户 ID,1001 为示例本体 ID,使用时换成真实有权坐标。单本体可由 path 或受支持 query 指定;all 模式提供 @ 选择当前用户可访问的本体。skillId 仅透传,不据此声称技能编排已可执行。
认证与域名
当前嵌入页依赖真实 DataFocus 登录态,会检查 /uc/status。跨站 Cookie、SSO、CSP frame-ancestors 和网关配置都会影响嵌入。它不接受把 MCP Bearer 塞入 URL 作为免登录通道;未实现的 outside 外链不能按设计建议自行拼出。
MCP 与 iframe 的区别
| 方式 | 使用者 | 身份与结果 |
|---|---|---|
| Remote MCP | 外部 Agent 或服务集成 | OAuth Grant 与结构化工具回执 |
| 本体对话 iframe | 人类终端用户 | 原登录态与对话界面 |
| MCP Apps | 支持扩展的 MCP 客户端 | 受控资源与当前工具结果,不是公开 iframe 登录替代 |
集成验收清单
在真实实例上证明完整业务链,而不是只确认接口返回 200。
- 发现:取得实际支持版本、当前工具目录和内置资源。
- 授权:普通用户仅看到获准本体与业务系统;没有 scope 的操作拒绝。
- 表结构:真实显示名、列、类型和权限完整。
- SQL:单维、多维、JOIN、日期、TopN 与截断检查符合实际业务口径。
- 知识:定位、完整原文与事实引用资格一致,混合问题同时有数据和文档依据。
- Search:模型、init、建议、结果、关闭及缓冲完整性检查通过。
- 可选分析与报告:多分支真实状态、翻页、权限变更及取消保持原行为。
- 可选建模:候选、计划、原审批、实际应用和版本查询逐阶段核对。
- 业务动作:发布哈希、目标版本、审批、幂等与跨 Grant 隔离核对。
- 恢复:网络超时后恢复原状态,来源更新后旧定位失效并使用新查询。
结果记录
记录实例版本、用户角色、Grant 范围、配置版本、真实操作与结果。协议客户端离线自检、示例 CSV 的离线预期值、静态 JSON Schema 校验和真正的线上功能验收分别标记。不要把一个阶段通过外推为全部产品通过。
规范资源与维护
使用随册完整工具 Schema,并与实例实际发现结果保持同步。
| 资源 | 内容 |
|---|---|
| reference/mcp-tool-catalog.json | 32 个本体侧和 8 个业务侧的声明输入 Schema;部分工具含原输出 Schema |
| reference/locales.json | 21 个可选项与 24 个兼容 locale 及 UI 术语 |
| reference/search-keywords.json | 17 个明确 locale 的静态关键词目录 |
| reference/analysis-contract-manifest.json | 分析 分支 事实 回执及报告相关版本约束 |
| examples/ | 合成 CSV 口径说明 Top3 SQL 预期结果与最小协议客户端 |
内置说明资源
datafocus://manuals/etl-formulas/v1
datafocus://manuals/search-keyword-queries/v1
datafocus://manuals/etl-functions/v1
datafocus://manuals/search-keywords/v1resources/list 和 resources/read 需要当前用户至少拥有 metadata、search operate 或 etl operate 中的一项对应读取资格。ETL 文档是静态跨产品参考;Flash 可执行能力仍只有其明确报告的范围。
外部协议参考
MCP 协议与授权背景参考官方规范:https://modelcontextprotocol.io/specification/2026-07-28/basic 和 https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization 。本产品的端点、工具和条件行为以 r56 实现及当前实例发现结果为准;不能把通用协议支持等同于服务器提供所有可选特性。
升级维护
升级时重新发现工具与版本,对比输入 Schema、输出合同和配置;旧 Grant 不会自动获得新 scope。保持引用、缓存和回执与源版本绑定,在确认不兼容变化后重新取得上下文,不把旧定位强行用于新业务状态。
工具参数参考 基础与原生 Search
完整名称与输入字段,按工具分组查阅。
以下表格是当前 r56 工具输入字段的阅读参考。完整嵌套类型、oneOf、条件必填、模式约束和部分输出 Schema 见 reference/mcp-tool-catalog.json;最终提交前仍需读取当前 Grant 的 tools/list。表中的“可选”不消除动作内部校验要求。
dfc_manual
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| names | array | 可选或条件必填 | 需要查找的明确名称,单次最多 32 个。 maxItems: 32 |
| action | string | 可选或条件必填 | 操作名。按当前枚举和动作对应参数使用。 enum: list, read, keywords, functions, etl_requests |
| locale | string | 可选或条件必填 | 明确静态参考目录 locale,不是查询默认语言。 |
| uri | string | 可选或条件必填 | 当前工具列出的内置资源 URI。 enum: datafocus://manuals/etl-formulas/v1, datafocus://manuals/search-keyword-queries/v1, datafocus://manuals/etl-functions/v1, datafocus://manuals/search-keywords/v1 |
dfc_search
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| data | object | 可选或条件必填 | 原动作载荷;参照能力发现与动作字段表。 |
| action | string | 必填 | 操作名。按当前枚举和动作对应参数使用。 enum: capabilities, model_create, model_read, open, request, poll, cancel, close |
dfc_etl
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| data | object | 可选或条件必填 | 原动作载荷;参照能力发现与动作字段表。 |
| action | string | 必填 | 操作名。按当前枚举和动作对应参数使用。 enum: capabilities |
dfc_ontologies
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| pageSize | integer | 可选或条件必填 | 每页条数;按 Schema 上限。 minimum: 1; maximum: 100 |
| page | integer | 可选或条件必填 | 页号,从 1 开始。 minimum: 1 |
dfc_ontology_resources
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| resourceTypes | array | 可选或条件必填 | 需要返回的资源类型集合。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| pageSize | integer | 可选或条件必填 | 每页条数;按 Schema 上限。 minimum: 1; maximum: 100 |
| page | integer | 可选或条件必填 | 页号,从 1 开始。 minimum: 1 |
工具参数参考 表格 图谱与知识
完整名称与输入字段,按工具分组查阅。
以下表格是当前 r56 工具输入字段的阅读参考。完整嵌套类型、oneOf、条件必填、模式约束和部分输出 Schema 见 reference/mcp-tool-catalog.json;最终提交前仍需读取当前 Grant 的 tools/list。表中的“可选”不消除动作内部校验要求。
dfc_ontology_graph
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| relationTypes | array | 可选或条件必填 | 关系类型过滤。 |
| depth | integer | 可选或条件必填 | 邻居遍历深度。 minimum: 1; maximum: 3 |
| sourceTypes | array | 可选或条件必填 | 来源类型过滤。 |
| query | object | 可选或条件必填 | 查询文本,或 action 对应的精确版本化查询对象。 |
| limit | integer | 可选或条件必填 | 返回数量上限。 minimum: 1; maximum: 100 |
| action | string | 必填 | 操作名。按当前枚举和动作对应参数使用。 enum: search, neighbors, published_model, published_query, candidate_query |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| nodeKey | string | 可选或条件必填 | 从实际图谱结果复制的节点键。 |
| keyword | string | 可选或条件必填 | 图谱定位关键词,不是关键词问数语法。 |
| nodeTypes | array | 可选或条件必填 | 节点类型过滤。 |
dfc_ontology_query
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| routeLocators | array | 可选或条件必填 | 完整复制服务端签发的类型化路由定位。 maxItems: 20 |
| topK | integer | 可选或条件必填 | 召回候选上限,不证明覆盖完整。 minimum: 1; maximum: 20 |
| queryMode | string | 可选或条件必填 | 按工具枚举选择证据查询模式。 enum: vector, hybrid, graph |
| fanoutPlan | object | 可选或条件必填 | 受限分支检索计划,按嵌套 Schema。 |
| structuredPlan | object | 可选或条件必填 | 完整文档表格的服务端合同绑定计划,不是 SQL。 |
| knowledgeIds | array | 可选或条件必填 | 实际 knowledgeBindings 中的知识库 ID。 |
| query | string | 必填 | 查询文本,或 action 对应的精确版本化查询对象。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
dfc_knowledge_search
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| topK | integer | 可选或条件必填 | 召回候选上限,不证明覆盖完整。 minimum: 1; maximum: 20 |
| minScore | number | 可选或条件必填 | 最低匹配分数。 minimum: 0; maximum: 1 |
| knowledgeIds | array | 可选或条件必填 | 实际 knowledgeBindings 中的知识库 ID。 |
| query | string | 必填 | 查询文本,或 action 对应的精确版本化查询对象。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| assetIds | array | 可选或条件必填 | 当前允许的文档资产 ID。 |
| retrievalStrategy | string | 可选或条件必填 | 实际支持的检索策略。 enum: auto, hybrid_stage2 |
dfc_knowledge_detail
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| qdrantId | string / integer | 可选或条件必填 | 实际定位返回的索引标识。 |
| pageNo | integer | 可选或条件必填 | 实际页面或分页页号。 |
| evidenceId | string | 可选或条件必填 | 同一知识定位返回的证据 ID。 |
| action | string | 必填 | 操作名。按当前枚举和动作对应参数使用。 enum: chunk, document, page_context |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| documentId | string / integer | 可选或条件必填 | 同一定位的文档 ID。 |
| radius | integer | 可选或条件必填 | 相邻页面范围。 minimum: 0; maximum: 3 |
| chunkId | string | 可选或条件必填 | 同一定位的实际分片 ID。 |
dfc_table
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| maxRows | integer | 可选或条件必填 | 返回行数上限;不是客户端排名范围。 minimum: 1; maximum: 200 |
| action | string | 必填 | 操作名。按当前枚举和动作对应参数使用。 enum: detail, query |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| id | string | 可选或条件必填 | 真实表资源 ID,不是物理名或显示名。 |
| sql | string | 可选或条件必填 | 单条本体范围内只读 Doris SQL,显式输出列。 |
工具参数参考 分析与报告
完整名称与输入字段,按工具分组查阅。
以下表格是当前 r56 工具输入字段的阅读参考。完整嵌套类型、oneOf、条件必填、模式约束和部分输出 Schema 见 reference/mcp-tool-catalog.json;最终提交前仍需读取当前 Grant 的 tools/list。表中的“可选”不消除动作内部校验要求。
dfc_analysis_ask
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| question | string | 必填 | 自然语言问题或兼容追问。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| language | string | 可选或条件必填 | 明确回答或查询 locale;省略按对应工具规则。 |
| sessionId | string | 可选或条件必填 | 同一 Grant 下的真实会话定位。 |
dfc_analysis_refine
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| branchId | string | 可选或条件必填 | 服务端签发的结构化分支定位。 |
| resultId | string | 必填 | 原返回的分析结果定位。 |
| question | string | 可选或条件必填 | 自然语言问题或兼容追问。 |
| idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 |
| change | object | 可选或条件必填 | 自然语言变更或类型化 filter_patch。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| language | string | 可选或条件必填 | 明确回答或查询 locale;省略按对应工具规则。 |
| sessionId | string | 必填 | 同一 Grant 下的真实会话定位。 |
| expectedRevision | integer | 必填 | 原结果或业务头版本前提;创建问题时可为 null。 minimum: 1 |
| visualId | string | 可选或条件必填 | 与分支绑定的可视化定位。 |
dfc_analysis_page
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| branchId | string | 必填 | 服务端签发的结构化分支定位。 |
| resultId | string | 必填 | 原返回的分析结果定位。 |
| pageNo | integer | 必填 | 实际页面或分页页号。 minimum: 1; maximum: 10000 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| pageSize | integer | 必填 | 每页条数;按 Schema 上限。 minimum: 1; maximum: 100 |
| sessionId | string | 必填 | 同一 Grant 下的真实会话定位。 |
| expectedRevision | integer | 必填 | 原结果或业务头版本前提;创建问题时可为 null。 minimum: 1 |
dfc_analysis_result_get
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| resultId | string | 必填 | 原返回的分析结果定位。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| sessionId | string | 必填 | 同一 Grant 下的真实会话定位。 |
dfc_analysis_cancel
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| resultId | string | 必填 | 原返回的分析结果定位。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| sessionId | string | 必填 | 同一 Grant 下的真实会话定位。 |
dfc_analysis_close
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| sessionId | string | 必填 | 同一 Grant 下的真实会话定位。 |
dfc_report_create
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| goal | string | 必填 | 报告分析目标。 |
| idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| language | string | 可选或条件必填 | 明确回答或查询 locale;省略按对应工具规则。 |
| title | string | 可选或条件必填 | 可选报告标题。 |
dfc_report_status
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| reportId | string | 必填 | 当前 Grant 的持久报告定位。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
dfc_report_cancel
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| reportId | string | 必填 | 当前 Grant 的持久报告定位。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
工具参数参考 建模与原任务
完整名称与输入字段,按工具分组查阅。
以下表格是当前 r56 工具输入字段的阅读参考。完整嵌套类型、oneOf、条件必填、模式约束和部分输出 Schema 见 reference/mcp-tool-catalog.json;最终提交前仍需读取当前 Grant 的 tools/list。表中的“可选”不消除动作内部校验要求。
dfc_ontology_agent
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| mode | string | 可选或条件必填 | QUERY 或 AUTHORING,能力分别受权。 enum: QUERY, AUTHORING |
| instruction | string | 可选或条件必填 | 用户需求文本;上下文与提交保持一致。 maxLength: 16000 |
| idempotencyKey | string | 可选或条件必填 | 同一逻辑操作稳定复用的幂等键。 maxLength: 128 |
| action | string | 必填 | 操作名。按当前枚举和动作对应参数使用。 enum: start, status, cancel |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| runId | string | 可选或条件必填 | 同一本体和 Grant 的原任务 ID。 |
| contractVersion | string | 必填 | 必须使用实际支持的精确合同版本。 enum: ontology-agent-task-v1 |
dfc_authoring_capabilities
此工具的输入根对象没有字段;使用空 arguments 对象。
dfc_artifact_context
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| artifactType | string | 必填 | 实际开启的制品或本体发布类型。 enum: CONTROL_PANEL_SPEC, VIEW_SPEC |
| scopeType | string | 可选或条件必填 | 实际制品合同中的资源范围类型。 |
| ontologyId | string | 可选或条件必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| projectId | string | 可选或条件必填 | 当前授权项目 ID。 |
| artifactId | string | 可选或条件必填 | 编辑已有制品的真实 ID。 |
| instruction | string | 必填 | 用户需求文本;上下文与提交保持一致。 |
| variables | object | 可选或条件必填 | 按返回合同提供的变量对象。 |
| previewInput | object | 可选或条件必填 | 按合同提供的有界预览输入。 |
| viewport | object | 可选或条件必填 | 原合同要求的展示视口。 |
dfc_ontology_table_schema
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| sourceAssetRef | string | 必填 | 已登记的结构化资产引用,例如 table:123。 |
| fields | array | 必填 | 当前来源的字段与可选显式类型声明。 minItems: 1; maxItems: 64 |
dfc_artifact_preview
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| proposalId | string | 必填 | 当前 Grant 创建的原候选 ID。 |
| candidateHash | string | 必填 | 原服务端候选的精确哈希。 |
| previewInput | object | 必填 | 按合同提供的有界预览输入。 |
dfc_artifact_status
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| proposalId | string | 可选或条件必填 | 当前 Grant 创建的原候选 ID。 |
| planId | string | 可选或条件必填 | 不可变应用计划 ID。 |
dfc_artifact_plan
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| proposalId | string | 必填 | 当前 Grant 创建的原候选 ID。 |
| candidateHash | string | 必填 | 原服务端候选的精确哈希。 |
| expectedTargetVersion | integer | 必填 | 当前真实目标版本前提。 minimum: 0 |
| idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 |
dfc_artifact_apply
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| planId | string | 必填 | 不可变应用计划 ID。 |
| planHash | string | 必填 | 原计划返回的哈希。 |
| approvalToken | string | 必填 | 原服务端发出的批准材料,禁止自行生成。 |
| idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 |
dfc_artifact_submit
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| 配置1 / artifactType | string | 必填 | 实际开启的制品或本体发布类型。 enum: CONTROL_PANEL_SPEC, VIEW_SPEC |
| 配置1 / scopeType | string | 可选或条件必填 | 实际制品合同中的资源范围类型。 |
| 配置1 / ontologyId | string | 可选或条件必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| 配置1 / projectId | string | 可选或条件必填 | 当前授权项目 ID。 |
| 配置1 / artifactId | string | 可选或条件必填 | 编辑已有制品的真实 ID。 |
| 配置1 / instruction | string | 必填 | 用户需求文本;上下文与提交保持一致。 |
| 配置1 / variables | object | 可选或条件必填 | 按返回合同提供的变量对象。 |
| 配置1 / previewInput | object | 可选或条件必填 | 按合同提供的有界预览输入。 |
| 配置1 / viewport | object | 可选或条件必填 | 原合同要求的展示视口。 |
| 配置1 / contractVersion | string | 必填 | 必须使用实际支持的精确合同版本。 |
| 配置1 / contextHash | string | 必填 | context 返回的完整上下文哈希。 |
| 配置1 / baseArtifactHash | string | 必填 | context 返回的基础制品哈希。 |
| 配置1 / baseArtifactVersion | integer | 必填 | context 返回的基础版本。 minimum: 0 |
| 配置1 / candidate | object | 必填 | 符合当前返回合同的候选对象。 |
| 配置1 / clientRequestId | string | 必填 | 当前候选请求稳定使用的客户端幂等键。 |
| 配置2 / artifactType | string | 必填 | 实际开启的制品或本体发布类型。 enum: ONTOLOGY_RELEASE |
| 配置2 / contractVersion | 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 |
| 配置2 / ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| 配置2 / candidateHash | string | 必填 | 原服务端候选的精确哈希。 |
| 配置2 / workspaceId | string | 必填 | 实际候选工作空间坐标。 |
| 配置2 / workspaceRevision | string | 必填 | 精确候选版本,不用 latest。 |
| 配置2 / releases | object | 必填 | 按本体发布合同提供的精确版本选择。 |
| 配置2 / selection | object | 必填 | 只提供明确业务选择坐标,不提供权限或完成证明。 |
| 配置2 / idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 |
| 配置3 / 配置1 / artifactType | string | 必填 | 实际开启的制品或本体发布类型。 enum: ONTOLOGY_RELEASE |
| 配置3 / 配置1 / contractVersion | string | 必填 | 必须使用实际支持的精确合同版本。 enum: ontology-workspace-create-mcp-submit-v1 |
| 配置3 / 配置1 / ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| 配置3 / 配置1 / workspaceId | string | 必填 | 实际候选工作空间坐标。 |
| 配置3 / 配置1 / resources | array | 必填 | 服务端编译的原模型声明。 minItems: 1 |
| 配置3 / 配置1 / idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 |
| 配置3 / 配置2 / artifactType | string | 必填 | 实际开启的制品或本体发布类型。 enum: ONTOLOGY_RELEASE |
| 配置3 / 配置2 / contractVersion | string | 必填 | 必须使用实际支持的精确合同版本。 enum: ontology-workspace-create-mcp-submit-v2 |
| 配置3 / 配置2 / ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| 配置3 / 配置2 / workspaceId | string | 必填 | 实际候选工作空间坐标。 |
| 配置3 / 配置2 / resources | array | 必填 | 服务端编译的原模型声明。 minItems: 1 |
| 配置3 / 配置2 / idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 |
| 配置3 / 配置2 / releaseSelections | object | 必填 | 每个已发布引用的精确 releaseId 及依赖闭包。 |
| 配置4 / artifactType | string | 必填 | 实际开启的制品或本体发布类型。 enum: ONTOLOGY_RELEASE |
| 配置4 / contractVersion | string | 必填 | 必须使用实际支持的精确合同版本。 enum: ontology-initial-activation-retirement-submit-v1 |
| 配置4 / ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| 配置4 / domainRid | string | 必填 | 真实业务域 RID。 |
| 配置4 / consumerScopes | array | 必填 | 服务端允许的精确消费者范围。 minItems: 1; maxItems: 256 |
| 配置4 / idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 |
工具参数参考 知识输入与范围
完整名称与输入字段,按工具分组查阅。
以下表格是当前 r56 工具输入字段的阅读参考。完整嵌套类型、oneOf、条件必填、模式约束和部分输出 Schema 见 reference/mcp-tool-catalog.json;最终提交前仍需读取当前 Grant 的 tools/list。表中的“可选”不消除动作内部校验要求。
dfc_ontology_knowledge_input_propose
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| request | object | 必填 | 原业务输入请求;按完整嵌套 Schema。 |
| idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 minLength: 1; maxLength: 128 |
此工具另有原生 outputSchema。检查输出的完整性、状态及明确为 false 的授权字段,不自行升级完成含义。
dfc_ontology_knowledge_input_preview
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 minLength: 1; maxLength: 128 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
此工具另有原生 outputSchema。检查输出的完整性、状态及明确为 false 的授权字段,不自行升级完成含义。
dfc_ontology_knowledge_question_submit
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| questionRevision | $ref | 必填 | 本次待确认问题的明确版本。 |
| idempotencyKey | $ref | 必填 | 同一逻辑操作稳定复用的幂等键。 |
| originalInputKey | $ref | 必填 | 对应原知识输入的幂等键。 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 |
| validUntil | $ref | 必填 | 问题有效窗口终点,UTC 时间。 |
| expectedRevision | oneOf | 必填 | 原结果或业务头版本前提;创建问题时可为 null。 |
| validFrom | $ref | 必填 | 问题有效窗口起点,UTC 时间。 |
此工具另有原生 outputSchema。检查输出的完整性、状态及明确为 false 的授权字段,不自行升级完成含义。
dfc_ontology_business_scope_initialize
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| domainRevisionId | string | 必填 | 精确业务域版本。 minLength: 1; maxLength: 128 |
| idempotencyKey | string | 必填 | 同一逻辑操作稳定复用的幂等键。 minLength: 1; maxLength: 128 |
| businessSystemId | string | 必填 | 真实业务系统 ID。 minLength: 1 |
| ontologyId | string | 必填 | 本次授权内的真实本体 ID,按字符串保留。 minLength: 1 |
| domainRid | string | 必填 | 真实业务域 RID。 minLength: 1; maxLength: 128 |
此工具另有原生 outputSchema。检查输出的完整性、状态及明确为 false 的授权字段,不自行升级完成含义。
工具参数参考 业务工作台
完整名称与输入字段,按工具分组查阅。
以下表格是当前 r56 工具输入字段的阅读参考。完整嵌套类型、oneOf、条件必填、模式约束和部分输出 Schema 见 reference/mcp-tool-catalog.json;最终提交前仍需读取当前 Grant 的 tools/list。表中的“可选”不消除动作内部校验要求。
dfb_systems
此工具的输入根对象没有字段;使用空 arguments 对象。
dfb_system_describe
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| systemId | string / integer | 必填 | 本次业务 Grant 允许的系统 ID。 |
dfb_query
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| systemId | string / integer | 必填 | 本次业务 Grant 允许的系统 ID。 |
| queryKey | string | 必填 | describe 返回的已发布查询键。 |
| objectKey | string | 可选或条件必填 | 已发布对象键。 |
| pageSize | integer | 可选或条件必填 | 每页条数;按 Schema 上限。 minimum: 1; maximum: 100 |
| page | integer | 可选或条件必填 | 页号,从 1 开始。 minimum: 1 |
| state | string | 可选或条件必填 | 业务状态过滤或服务端状态。 |
dfb_record
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| recordId | string / integer | 必填 | 当前允许读取的业务记录 ID。 |
| systemId | string / integer | 必填 | 本次业务 Grant 允许的系统 ID。 |
dfb_work_items
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| systemId | string / integer | 必填 | 本次业务 Grant 允许的系统 ID。 |
dfb_action_plan
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| expectedRecordVersion | integer | 可选或条件必填 | 目标记录的当前乐观锁版本。 minimum: 1 |
| systemId | string / integer | 必填 | 本次业务 Grant 允许的系统 ID。 |
| commandType | string | 必填 | 已发布契约中的命令类型。 |
| canonicalIrHash | string | 必填 | 当前发布的规范 IR 哈希。 |
| releaseId | string / integer | 必填 | 实际发布契约版本 ID。 |
| payload | object | 必填 | 符合 describe 中当前命令合同的载荷。 |
| releaseHash | string | 必填 | 实际发布契约哈希。 |
| targetRecordId | string / integer | 可选或条件必填 | 需要操作的真实目标记录。 |
| agentManifestHash | string | 必填 | 实际 Agent 能力 manifest 哈希。 |
| planIdempotencyKey | string | 必填 | 业务计划的稳定幂等键。 |
dfb_action_status
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| actionPlanId | string / integer | 必填 | 当前业务 Grant 拥有的动作计划 ID。 |
dfb_action_execute
| 参数 | 类型 | 要求 | 含义与范围 |
|---|---|---|---|
| approvalToken | string | 可选或条件必填 | 原服务端发出的批准材料,禁止自行生成。 |
| actionPlanId | string / integer | 必填 | 当前业务 Grant 拥有的动作计划 ID。 |