Use case
WikiBricks preserves tool_name on normalized tool-call events when the source harness provides it. This is useful raw evidence, but it does not provide a session-level inventory. Skills are not represented as a separate concept.
Later agents need to know which capabilities produced a memory. That information helps them reproduce work, audit provenance, and distinguish a missing capability from a different result. MCP tools and skills need separate fields because they have different identities and lifecycles.
Proposed API
Add a versioned provenance object to the normalized session contract. The values must come from explicit harness events or metadata, not from text inference.
{
"schema_version": 2,
"session": {
"provenance": {
"capture_status": "partial",
"mcp_tools": [
{
"server": "wikibricks",
"tool": "wiki_search",
"calls": 2,
"event_ids": ["call-17", "call-29"]
}
],
"skills": [
{
"name": "databricks-docs",
"version": "0.1.0",
"uses": 1
}
]
}
}
}
server, version, and event IDs can be optional when a harness does not expose them. capture_status states whether the adapter supplied complete, partial, or unavailable provenance.
wiki_read_full returns both inventories as structured data. Search indexes the normalized names so a user can find sessions that used a specific tool or skill.
Acceptance criteria
- The session schema stores
mcp_tools and skills as separate collections.
- Omnigent, Claude Code, and JSONL adapters populate only fields supported by their source data.
- Repeated imports produce the same normalized names, counts, and event references.
- The inventory stores names and counts, not tool arguments, results, tokens, or secrets.
wiki_read_full exposes the inventory, so clients do not need to scan the transcript.
- Version 1 JSONL imports continue to work.
- Tests cover flattened tool names, missing server names, repeated calls, and absent skill events.
Alternatives considered
Raw tool-call events already retain tool_name, but callers must reconstruct usage and cannot identify skills. Tags lose counts, event references, capture quality, and the MCP server boundary. Text inference can invent usage and does not belong in an evidence contract.
Additional context
Use case
WikiBricks preserves
tool_nameon normalized tool-call events when the source harness provides it. This is useful raw evidence, but it does not provide a session-level inventory. Skills are not represented as a separate concept.Later agents need to know which capabilities produced a memory. That information helps them reproduce work, audit provenance, and distinguish a missing capability from a different result. MCP tools and skills need separate fields because they have different identities and lifecycles.
Proposed API
Add a versioned
provenanceobject to the normalized session contract. The values must come from explicit harness events or metadata, not from text inference.{ "schema_version": 2, "session": { "provenance": { "capture_status": "partial", "mcp_tools": [ { "server": "wikibricks", "tool": "wiki_search", "calls": 2, "event_ids": ["call-17", "call-29"] } ], "skills": [ { "name": "databricks-docs", "version": "0.1.0", "uses": 1 } ] } } }server,version, and event IDs can be optional when a harness does not expose them.capture_statusstates whether the adapter supplied complete, partial, or unavailable provenance.wiki_read_fullreturns both inventories as structured data. Search indexes the normalized names so a user can find sessions that used a specific tool or skill.Acceptance criteria
mcp_toolsandskillsas separate collections.wiki_read_fullexposes the inventory, so clients do not need to scan the transcript.Alternatives considered
Raw tool-call events already retain
tool_name, but callers must reconstruct usage and cannot identify skills. Tags lose counts, event references, capture quality, and the MCP server boundary. Text inference can invent usage and does not belong in an evidence contract.Additional context
src/wikibricks/models.pysrc/wikibricks/adapters/omnigent.pysession-record.schema.json