Download OpenAPI specification:
Context Loader 把自己的检索能力同时以 MCP Server 形式对外:Cursor、Claude Desktop 等 MCP 客户端可以直接接入,不必逐个封装 REST 调用。
普通 Agent 默认只使用两个受管生命周期工具:bkn_start_interaction、
bkn_finish_interaction。每轮 start 都提交完整问题、固定的 agent_name 和 conversation_mode:没有当前
Conversation 时用 new 且不传 conversation_id;按显式 id 延续时用 continue 并传入 start 返回的 id。
宿主提供会话映射时,以宿主映射为准。finish 只提交当前 Interaction 的
结果,不关闭可跨轮、跨日复用的 Conversation。业务工具包括 search_schema、
query_object_instance、query_instance_subgraph、get_logic_properties_values、
get_action_info、execute_action、get_action_execution、
list_action_executions、list_knowledge_networks、
get_kn_detail、get_object_types、get_relation_types、
list_skills、get_skill_content、read_skill_file、
search_capabilities、execute_tool。
run_sql、list_resources、describe_resource 已从 MCP 面下线:它们按调用者
自己的数据资源授权返回物理列,绕开知识网络的属性级规则,因此只保留 REST
入口(POST /kn/run_sql、POST /kn/list_resources、POST /kn/describe_resource),
tools/list、tools/call、按需网关与沙箱能力面都不再提供。
另有一个默认不装配的 execute_skill:它把入口命令送进沙箱执行,只有显式开启
(EXECUTE_SKILL_ENABLED=true)才出现在 tools/list 与 GET /mcp/info,
未开启时与「没编译进来」无异。该开关是技能执行能力的总闸,同时决定
/kn/execute_skill 这条 REST 路由是否注册。业务工具必须显式携带服务自描述 schema 中的 bkn_context,
其中只要求权威返回的 conversation_id 和 interaction_id;Operation key、租约、
重试和 closure manifest 由 Context Loader 与 BKN Trace Core 管理;
关闭 Trace 采集时,start_interaction 仍创建会话与交互并返回真实 ID;
业务工具继续携带这些 ID 执行,但不新增 Operation、回执或证据;
finish_interaction 仍结束交互。Trace Core 不可用时,无法创建受管控会话,
start_interaction 不返回 ID;调用方先重试 start,不会伪造 ID;
各工具的语义与参数含义见本目录下对应的 REST 文档。
接入方式:Streamable HTTP,端点 /api/agent-retrieval/v1/mcp,
协议流程 initialize → tools/list → tools/call(JSON-RPC 2.0)。
鉴权与 REST 一致:Authorization: Bearer <token>,OAuth access token 或
bak_ 前缀的 AppKey。宿主适配器可选使用
X-OpenBKN-Host-Conversation-Key 和 X-OpenBKN-Client-Invocation-Id,或对应的
openbkn.ai/host-conversation-key、openbkn.ai/client-invocation-id MCP _meta
提示会话关联与调用幂等;client-invocation-id 可用于 start 和每一次业务工具调用,
同一 ID 重试复用原 Interaction 或 Operation / Receipt,不同输入返回幂等冲突。
未提供逐调用提示时,跨连接重试退化为 at-least-once。这些提示不参与身份和权限判定,
普通 Agent 参数不得提交。
不想先握手就想知道有哪些工具时,直接 GET /mcp/info——它返回完整的工具目录
(含每个工具的输入输出 schema)与一份可直接粘贴的客户端配置。
精简入口:/api/agent-retrieval/v1/mcp-compact 是同一进程里的第二个 MCP
端点,鉴权、受管生命周期和工具语义与 /mcp 相同,面向每次模型调用都携带全部
工具定义的宿主。它只公布 14 个工具,其余能力经按需网关使用,见下文
/mcp-compact 与 GET /mcp-compact/info。
权限说明(permission_guidance):query_object_instance 与
get_logic_properties_values 在访问权限影响调用时附带该对象,两个入口相同。
被 403 拒绝时,它加在错误正文 JSON(isError=true)的顶层,与 code、details
并列;query_object_instance 成功但有字段脱敏 / 只可见字段名,或行访问范围
收窄了结果时,它出现在结果顶层;调用时指定了 properties 的,只看这些字段。结构:message(按请求语言生成、可直接展示给
用户的说明:缺什么权限、结果受什么影响,以及下一步——有申请链接时提示提交后
等待管理员授权再重新发起,没有时提示联系管理员)、resource(type=object_type、
id=<kn_id>/<ot_id>、kn_id、ot_id,调用者可查看该对象类定义时才有
name)与 shortfalls[]。每项的 scope 取 bkn-safe 权限申请的
proposal kind:grant(缺基础操作,附 operations)、property_grants
(附拿不到原始值的 properties)、row_filter(结果可能不完整)。
request_permission_url 是 Studio 对象类详情页打开申请弹窗的地址:请求经
ingress 进入(带 X-Forwarded-Host)时为绝对地址,
主机即调用者访问 MCP 所用的主机;集群内调用拿不到对外主机,此时为相对
Studio 主机的路径(以 / 开头),由调用方补全。链接在路由模板后追加申请弹窗的
预填参数:operations(grant,逗号分隔)或 properties(property_grants,逗号
分隔)、按请求语言生成的默认 reason(URL 编码,空格为 %20),以及
source=agent。链接只在调用者是用户账号、且能查看该对象类定义时给出;否则只说明受限,
不给链接也不给名称。路径模板和开关由部署配置
permission_request.path_template / permission_request.disabled 决定,
社区版没有申请流程时应关闭。空结果或空值本身不代表权限不足。
一次 GET 拿到端点、协议、鉴权方式、全部工具的名称 / 描述 / 输入输出 schema, 以及一份可直接用的客户端配置示例。给人看,也给 Agent 自举用。
endpoint 按当次请求推导(识别 X-Forwarded-Proto),因此走网关访问时
返回的就是网关地址,可直接抄进客户端配置。
| Accept-Language | string 可选的 RFC 9110 语言偏好。服务从支持的 MCP 协议本身不定义语言协商, 不传则使用部署配置的服务默认语言,无需客户端参与。每个请求独立判定,
不与 |
{- "service": "context-loader",
- "protocol": "MCP / JSON-RPC 2.0 (initialize → tools/list → tools/call)",
- "transport": "Streamable HTTP",
- "auth": "string",
- "language": "zh-CN",
- "supported_languages": [
- "zh-CN",
- "en-US"
], - "tool_count": 0,
- "toolkit_version": "sha256:55dd56a2d9df5a549923c85826e6cfeec4a49c4f3fce6a25f19bd7c807d24843",
- "tools": [
- {
- "name": "string",
- "title": "string",
- "group": "string",
- "group_title": "string",
- "order": 0,
- "description": "string",
- "input_schema": { },
- "output_schema": { }
}
], - "client_config_example": { }
}标准 MCP Streamable HTTP 入口,收发 JSON-RPC 2.0 报文。请求与响应结构由 MCP 协议定义,本文档不再复述——用现成的 MCP 客户端接入即可,不要手写调用。
同一路径也接受协议规定的其他方法(如用于服务端推送的 GET、用于结束会话的
DELETE),具体以 MCP 规范为准。
tools/list 的每个工具除协议必备字段外,还带一组展示元数据,供客户端直接
渲染工具目录,不必自行维护工具名到中文名的映射表:
title:展示名,MCP 协议自身的字段(2025-06-18 起)。缺失时回退到 name。_meta["openbkn.ai/group"]:分组标识,稳定值,可用于分支判断。_meta["openbkn.ai/group_title"]:分组展示名。_meta["openbkn.ai/order"]:目录内位置,升序;未声明的排在末尾。title 与 group_title 随部署的语言设置本地化;group 与 order 不随语言
变化。_meta 下这三项不是协议字段,不认识它们的客户端会按协议忽略。
GET /mcp/info 返回同一份元数据,只是平铺成普通字段。
| Accept-Language | string 可选的 RFC 9110 语言偏好。服务从支持的 MCP 协议本身不定义语言协商, 不传则使用部署配置的服务默认语言,无需客户端参与。每个请求独立判定,
不与 |
| property name* additional property | any |
{- "jsonrpc": "2.0",
- "id": 1,
- "method": "tools/list"
}{ }/mcp-compact 的自描述,结构与 GET /mcp/info 相同,区别只有:
endpoint 指向精简入口;tools 只含本入口公布的 11 个工具,schema 与本入口 tools/list 一致
(业务工具无输出 schema,bkn_context 只声明两个 ID,见 /mcp-compact);toolkit_version:该哈希描述的是 /mcp 公布的工具面,也是沙箱镜像
构建时对齐的对象;本入口经网关可达沙箱执行工具,但不公布它们,要比对版本
请用 GET /mcp/info。| Accept-Language | string 可选的 RFC 9110 语言偏好。服务从支持的 MCP 协议本身不定义语言协商, 不传则使用部署配置的服务默认语言,无需客户端参与。每个请求独立判定,
不与 |
{- "service": "context-loader",
- "protocol": "MCP / JSON-RPC 2.0 (initialize → tools/list → tools/call)",
- "transport": "Streamable HTTP",
- "auth": "string",
- "language": "zh-CN",
- "supported_languages": [
- "zh-CN",
- "en-US"
], - "tool_count": 0,
- "toolkit_version": "sha256:55dd56a2d9df5a549923c85826e6cfeec4a49c4f3fce6a25f19bd7c807d24843",
- "tools": [
- {
- "name": "string",
- "title": "string",
- "group": "string",
- "group_title": "string",
- "order": 0,
- "description": "string",
- "input_schema": { },
- "output_schema": { }
}
], - "client_config_example": { }
}与 /mcp 相同的 MCP Streamable HTTP 协议、鉴权与受管生命周期,工具定义更少,
适合每次模型调用都携带全部工具定义的宿主。
公布的工具(固定 14 个,不随连接变化):
bkn_start_interaction、bkn_finish_interaction;list_knowledge_networks、get_kn_detail、search_schema、
search_instance、query_object_instance、query_metric、
drill_through_metric、run_cypher、query_instance_subgraph;search_native_tools、describe_native_tool、execute_native_tool。按需网关:/mcp 上的其余业务工具(含 explore_subgraph、
execute_action、search_capabilities、execute_tool、技能工具、沙箱执行工具
run_code / run_shell,以及许可证覆盖的企业版工具)不出现在 tools/list,
经网关使用:
search_native_tools:用一句话说明要做的事,返回候选工具及其适用场景。
只有一个候选明显胜出、且它的参数 schema 不超过 4000 字节时,结果里还会带
ready:{name, arguments_schema, call_template},与
describe_native_tool 对同一个名字的回答逐字节一致,直接据此执行即可;describe_native_tool:取目标的参数 schema 与调用模板。上一步给了
ready 就不必再调;候选打平或 schema 过大时才需要这一跳;execute_native_tool:name 填目标工具名,arguments 填目标参数,
bkn_context 放在外层。目标按自身名称经过与直接调用相同的许可证闸门和受管
guard,Trace 记录的是目标工具名。本入口未公布的工具直接用 tools/call 调用时,按不存在的工具返回协议标准错误。
与 /mcp 的差异:
response_format;结果为文本,
受管回执放在结果的 _meta["openbkn.ai/receipt"],不返回
structuredContent。两个生命周期工具的结果与 /mcp 相同。bkn_context 只声明 conversation_id 与
interaction_id;business_refs 等其余字段仍被接受。unknown_arguments,附允许的参数列表),
拒绝发生在受管 Operation 创建之前。execute_native_tool 会解析字符串形式的 arguments,并去掉与外层一致的
内层 bkn_context;发生这类归一时,实际执行的参数回显在结果的
_meta["openbkn.ai/normalized_arguments"]。网关的拒绝码(结果 isError=true,正文为 JSON,error 字段取值如下):
| 取值 | 含义 |
|---|---|
unknown_tool |
网关里没有这个名字;正文说明挂载函数与技能的正确调用方式 |
published_directly |
目标已在本入口直接公布,应直接调用 |
invalid_arguments |
参数不符合目标 schema;附 violations,schema 不超过 8000 字符时一并返回 |
schema_too_large |
目标的参数 schema 超过 8000 字符,describe_native_tool 不返回 |
bkn_context_mismatch |
内层 bkn_context 与外层不一致 |
response_format_not_accepted |
目标参数里带了 response_format |
unknown_arguments |
调用了未声明的参数 |
| Accept-Language | string 可选的 RFC 9110 语言偏好。服务从支持的 MCP 协议本身不定义语言协商, 不传则使用部署配置的服务默认语言,无需客户端参与。每个请求独立判定,
不与 |
| property name* additional property | any |
{- "jsonrpc": "2.0",
- "id": 3,
- "method": "tools/call",
- "params": {
- "name": "execute_native_tool",
- "arguments": {
- "name": "run_cypher",
- "arguments": {
- "kn_id": "kn_demo",
- "query": "MATCH (o:orders) RETURN o.status, count(o.id) AS n"
}, - "bkn_context": {
- "conversation_id": "conv_...",
- "interaction_id": "int_..."
}
}
}
}{ }