FaultDebug
Read-only MCP server for inspecting FaultDebug crash artifacts, source-verified bundles, and a local evidence store — keeping observed, static-candidate, and unresolved evidence separate.
Capabilities & health:
get_capabilitiesreturns the v1.0 evidence contract;check_storeinspects store health/migration without writing.Artifact inspection:
discover_artifactsfinds/validates spool entries;open_faultandquery_artifact_indexopen and query individual.faultartifacts.Runtime traces:
get_thread_tracefor per-thread events (paged),get_timelineacross multiple artifacts,collect_faultsto aggregate by names/trace_id/correlation_id.RPC/IPC evidence:
get_rpc_tracefor semantic RPC observations,get_process_relationsjoins only explicit IPC/RPC endpoints across artifacts.Sessions & evidence store:
list_sessions,get_session,get_process_participants,get_provenanceagainst a read-only SQLite store.Incidents:
list_incidents,get_incident_slice,get_unresolved, plusget_incident_reportandget_session_manifestwith separated evidence classes.Source verification:
get_source_evidence,get_function_source,resolve_addresses, andget_call_relationsreturn exact file/line/hash citations only from a verified bundle (Build ID/hash checked); mismatches fail explicitly.Summaries:
get_evidence_summarysummarizes observed vs. static-candidate vs. unresolved evidence.
All operations are local-only, read-only, paged, and never upload artifacts or infer causality from IDs, timestamps, or process names.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FaultDebuginspect the latest .fault artifact and show any dropped events"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FaultDebug
Bounded C/C++ crash tracing with verified-source inspection. Capture runtime events locally, inspect what was actually recorded, and keep missing evidence visible.
Guides: English · 한국어 · 简体中文 · 日本語
FaultDebug combines a small C11 runtime, C/C++ build integration, and a Python
CLI/MCP inspector. The runtime records bounded function-entry and function-exit
events while an instrumented program runs. After the target exits, the local
launcher collects and validates the shared-memory trace and may write a
.fault artifact for a supported fatal signal or partial termination.
FaultDebug is designed to preserve evidence and its limits. It does not guess missing events, infer causality from process names or shared IDs, or present static call-graph candidates as observed execution.
Project status
The current version is 1.2.0rc1 (Git tag v1.2.0-rc.1), published as a
pre-release candidate. Local and GitHub-hosted core and gRPC profiles pass. An
independent acceptance review has not run yet, and the 30-minute soak trace is
incomplete with 344,793 dropped events and 9,276 unstable snapshot records.
This candidate is not the final v1.2.0 release; see
the v1.2 plan and
validation report for scope and limits.
Related MCP server: Hive Radar MCP
What it provides
Bounded runtime tracing: per-thread event rings, committed-record checks, module identity, signal metadata, and explicit overflow/partial status.
Post-exit collection: the launcher owns the shared-memory descriptor and readiness handshake; collection happens after the target exits.
Verified source lookup: immutable source snapshots, compile databases, Build IDs, and hashes are checked before source-backed inspection.
Local evidence workflows: CLI and read-only MCP tools for artifact inspection, process/session grouping, evidence-store queries, and explicitly supported RPC/IPC relationships.
Build integration: CMake helpers and compiler wrappers for C/C++ builds, including opt-in source-selection profiles.
Normal successful runs do not write a fault artifact unless
--collect-success is requested. A crash artifact may still be incomplete;
check its trace, dropped-event, snapshot, and collector status before relying on
it.
Why FaultDebug
Record function-level runtime events in a bounded C11 recorder without requiring a tracing daemon or remote service.
Tie source lookup to captured build inputs, hashes, and module Build IDs so a changed checkout is not mistaken for the source that produced an artifact.
Use a local CLI or read-only MCP server to inspect artifacts and explicitly separate observed events, static candidates, and unresolved evidence.
Keep overflow, incomplete snapshots, and missing optional evidence visible.
The runtime currently targets Linux on Ubuntu 24.04 x86_64. It is a diagnostic and forensic aid, not a lossless recorder: inspect artifact completeness and drop counts before drawing conclusions.
Supported environment
The documented support target is Ubuntu 24.04 x86_64 with Python 3.12, Clang 18, CMake 3.20 or newer, and Ninja. The recorder is C11; the native fixtures also exercise C++17. Other platforms and compiler versions are outside the current support commitment.
Python dependencies are pinned in pyproject.toml:
libclang, pyelftools, and the MCP SDK. Fault artifacts, source bundles, and
the MCP interface are local-only. Remote transport and encryption are not
provided.
Quick start
Clone the repository:
git clone https://github.com/lsh235/FalutDebugMCP.git
cd FalutDebugMCPInstall the native toolchain and Python environment:
sudo apt-get update
sudo apt-get install clang-18 llvm-18-tools cmake ninja-build python3.12 python3.12-venv
python3.12 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -e .Configure and build the runtime plus the native fixtures:
cmake -S . -B build -G Ninja \
-DCMAKE_C_COMPILER=clang-18 \
-DCMAKE_CXX_COMPILER=clang++-18 \
-DFAULTDEBUG_PYTHON_EXECUTABLE="$PWD/.venv/bin/python" \
-DFAULTDEBUG_BUILD_TESTS=ON
cmake --build build --parallel 2Check the local environment and run a fixture:
.venv/bin/fault-debug doctor
.venv/bin/fault-debug capabilities
.venv/bin/fault-debug run --artifact-dir artifacts -- build/test/fd_c_chain 16The normal fixture exits successfully and does not create a .fault file.
To exercise a SIGSEGV capture, run:
.venv/bin/fault-debug run --artifact-dir artifacts -- build/test/fd_signals 11The target's SIGSEGV produces the usual signal-based shell status (139) and a
fault-<pid>.fault artifact under artifacts/. The artifact is evidence of
the recorded run, not a guarantee that every event was retained.
For builds without system packages, see the repository's
Clang 18 setup. For the complete validation matrix, see
test/README.md.
Inspecting and sharing evidence
Inspect an artifact locally:
.venv/bin/fault-debug inspect artifacts/fault-<pid>.faultSource and call-relation lookup requires a verified bundle. Create an index from the CMake compilation database and bundle the captured source and target binary:
.venv/bin/fault-debug index build/compile_commands.json -o build/index.json
.venv/bin/fault-debug bundle \
--source-root build/faultdebug-source-snapshot/files \
--index build/index.json \
--binary build/test/fd_c_chain \
--output build/bundle
.venv/bin/fault-debug inspect artifacts/fault-<pid>.fault --bundle build/bundleBundles bind source and index data to the binary Build ID and hashes. Missing or mismatched inputs fail explicitly; the current worktree is not substituted for missing captured source.
The MCP server uses stdio and restricts artifact access to the configured root.
For MCP clients that accept the common mcpServers configuration shape, use
absolute paths for the installed CLI and artifact directory:
{
"mcpServers": {
"faultdebug": {
"command": "/absolute/path/to/.venv/bin/fault-debug",
"args": ["mcp", "--root", "/absolute/path/to/artifacts"]
}
}
}The server is read-only. It does not upload artifacts or contact a remote service. Do not expose sensitive fault artifacts, bundles, or source paths in public issues.
Evidence rules
FaultDebug keeps these result classes separate:
Observed: committed runtime records and explicitly matching RPC/IPC endpoints present in the captured evidence.
Static candidates: possibilities from source or compilation data; these are not proof that a function executed.
Unresolved: missing, ambiguous, partial, malformed, or untrusted evidence.
A shared trace ID, parent PID, function name, or timestamp alone does not prove cross-process causality. The semantic RPC sidecar is optional and versioned; older artifacts remain readable and report unavailable RPC evidence as unresolved. See the RPC evidence contract and artifact format.
Development
Run the named native tests and launcher acceptance suite:
ctest --test-dir build --output-on-failure
FD_LAUNCHER="$PWD/.venv/bin/fault-debug" \
.venv/bin/python test/run_tests.py --suite smoke --output test-results/smokeChanges to artifact, ABI, source-bundle, or MCP contracts should include
malformed-input and compatibility coverage. The v1.2 profile runner and
scheduled/manual GitHub Actions workflow are documented in
docs/clang18-ci.md. Report files, build trees, and
.fault artifacts are generated locally and are not part of the source upload.
Before opening a pull request, read
CONTRIBUTING.md and
SECURITY.md. The project is licensed under
Apache-2.0; third-party notices are in NOTICE.
Documentation
Available Tools
24 toolscheck_storeB
Inspect store health and migration compatibility without writing.
| Name | Required | Description | Default |
|---|---|---|---|
| db | No | evidence.sqlite3 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one important behavioral fact: the operation does not write. However it does not state what happens when the store is missing or corrupt, whether it needs an existing file, what the result looks like, or any permissions/timeout behavior for a migration check.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the scoping fact ('without writing') comes last where it belongs. It is efficient, though arguably too terse to cover a diagnostic tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is structurally simple (one optional param, no nested objects), so the description is nearly sufficient to call it. Gaps remain around return values and error behavior — with no output schema, the description could have said what a health/migration report contains, and it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single db parameter, so the description must compensate. It says nothing about what 'db' expects (a filesystem path?), how to target a non-default store, or what the default 'evidence.sqlite3' means in context. The name and default already live in the schema, so no value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (inspect) and resource (store) plus the two aspects checked: health and migration compatibility. It stands apart from the get_/list_/query_ siblings, which are evidence-retrieval tools, so the agent can tell it is a diagnostic rather than a data fetcher. The only missing element is an explicit comparison to a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement, but the phrase 'without writing' implies a safe pre-flight/diagnostic use before a migration. No alternatives or exclusions are named, and none of the siblings overlaps, so the implied usage is adequate but thin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collect_faultsD
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| names | Yes | ||
| trace_id | No | ||
| correlation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_artifactsD
Discover and validate bounded artifact spool entries.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| pattern | No | fault-*.fault | |
| include_json | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. 'Validate' hints that some checking occurs but nothing is said about what validation means, whether the operation is read-only, what errors or side effects exist, or what the result contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, so it is concise and front-loaded. However, that brevity comes from under-specification rather than tight editing, leaving the one sentence too vague to be actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and zero parameter documentation, the description should compensate heavily — instead it supplies one jargon-laden sentence. An agent cannot determine inputs, behavior, or return semantics from it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters (page, pattern, include_json), and the description never mentions any of them. The agent has no information about what 'pattern' globs, what pagination unit 'page' represents, or what include_json toggles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name with added jargon ('bounded artifact spool entries') rather than explaining what is actually discovered or validated. 'Discover and validate' names two verbs but the resource ('bounded artifact spool entries') is opaque, and it gives no signal distinguishing it from the close sibling query_artifact_index.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many sibling discovery tools (query_artifact_index, get_source_evidence, collect_faults). No prerequisites, exclusions, or alternative-routing information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_relationsD
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| bundle | No | ||
| direction | No | outbound | |
| function_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilitiesC
Return the bounded v1.0 capability and evidence contract.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only says it returns a contract. It doesn't disclose whether this is a read-only discovery call, whether it's idempotent, or what the bounded contract contains or how it should be used.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words. It is front-loaded and appropriately sized for a no-argument discovery tool, though the abstraction reduces usefulness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that presumably exposes a capability/evidence contract, the description is too thin. With no output schema and no annotations, an agent cannot know what it will receive or why it should call this before other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to compensate for on the parameter side.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it returns a 'bounded v1.0 capability and evidence contract', which names the resource (capabilities) but the phrasing is abstract and jargon-heavy. It doesn't distinguish this tool from siblings like get_evidence_summary or get_provenance in a way an agent can immediately act on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to call this tool versus alternatives such as get_evidence_summary or other capability-related siblings. The agent must infer its role from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_evidence_summaryC
Summarize observed, static-candidate, and unresolved evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says what categories are summarized but does not clarify read/write behavior, required permissions, response shape, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no wasted wording. It is appropriately terse for a summary tool, though its brevity also reflects missing detail elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should carry more context. It does not explain the required 'name' argument, when to use this tool, or what the returned summary contains beyond naming three evidence categories.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter 'name' has 0% schema description coverage and is not mentioned in the description at all. The description does not explain what 'name' identifies, leaving the parameter semantically empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Summarize') and resource ('evidence'), and names the three evidence categories it covers. It does not explicitly differentiate itself from nearby siblings such as get_unresolved or get_source_evidence, so it is clear but not fully self-routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to use this tool, when not to use it, or which sibling alternatives exist. The agent gets no explicit selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_function_sourceD
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| bundle | No | ||
| function_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_reportC
Return a read-only incident report with separate evidence classes.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| names | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It states 'read-only' and mentions 'separate evidence classes,' but omits permissions, pagination behavior, error handling, and what those evidence classes actually are.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loading the verb and resource. It is concise, though its brevity comes at the cost of necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two undocumented parameters, no output schema, and no annotations, the description is far too thin. It does not compensate for missing parameter semantics or explain the report's structure beyond a vague mention of evidence classes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description never mentions the two parameters ('names', 'page'). It fails to explain what names refer to, whether they are required identifiers, or how pagination works.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return a read-only incident report'), so an agent knows what it does. However, it does not differentiate from siblings like get_incident_slice or list_incidents, leaving ambiguity about when this report is the right choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as list_incidents or get_incident_slice. The only implied usage is 'to get an incident report,' which is tautological.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incident_sliceC
Return bounded process/artifact/event/source evidence for one incident.
| Name | Required | Description | Default |
|---|---|---|---|
| db | No | evidence.sqlite3 | |
| page | No | ||
| incident_id | Yes | ||
| trust_state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only hints at pagination via 'bounded' and does not disclose read-only status, side effects, auth requirements, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is efficient, though the extreme brevity contributes to other coverage gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four parameters, no output schema, and no annotations. A one-sentence description does not provide enough usage, parameter, or behavioral context for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for four parameters. The phrase 'for one incident' loosely maps to incident_id, but db, page, and trust_state are not explained, so the description barely compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and scoped resource ('bounded process/artifact/event/source evidence for one incident'). It distinguishes itself from some siblings like get_incident_report and get_source_evidence by naming the evidence types, but 'bounded' and 'slice' remain vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives, and no exclusions are provided. The description only says what it returns, leaving the agent to infer when this tool should be selected over sibling evidence-retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_process_participantsC
Return read-only process participant metadata for a session.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| names | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the operation is read-only, but omits permissions, pagination behavior, return format, and any constraints on the required names parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler, which makes it concise and easy to parse. However, its brevity comes at the cost of useful detail rather than being optimally sized for a tool with undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% parameter description coverage, the definition is not complete enough for an agent to invoke the tool correctly. It does not explain what 'process participant metadata' contains, how 'names' filters results, or how pagination works.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions neither parameter. The required 'names' array and the optional 'page' parameter receive no explanation of meaning, format, or expected values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Return), resource (process participant metadata), and scope (for a session). It is clear what the tool does, but it does not distinguish itself from sibling tools such as get_process_relations or get_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The phrase 'for a session' implies a context but does not explain when the tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_process_relationsC
Join only explicit IPC/RPC endpoint evidence across artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| names | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that only explicit IPC/RPC evidence is joined across artifacts, which is useful, but omits whether the tool is read-only, what authentication or permissions are required, pagination behavior despite a page parameter, and what the result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single, front-loaded sentence with no wasted words. Still, the extreme brevity leaves the definition under-specified for a tool with required and paging inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, no output schema, 0% schema description coverage, and two parameters including a required array. The description does not explain inputs, output, usage context, or how it differs from similar retrieval tools, leaving the agent without enough information to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain the 'names' or 'page' parameters at all. With two undocumented parameters, the description fails to compensate for the schema's lack of parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action, 'Join', and a narrow evidence domain, 'explicit IPC/RPC endpoint evidence across artifacts'. However, it never explicitly says it retrieves process relations, and it does not differentiate itself from close siblings such as get_rpc_trace, get_call_relations, or get_process_participants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'only explicit IPC/RPC endpoint evidence' implies a scope constraint, but there is no when-to-use guidance, no when-not-to-use guidance, and no mention of alternatives. An agent must infer usage from the name and sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_provenanceC
Return provenance and trust rows for local evidence artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| db | No | evidence.sqlite3 | |
| page | No | ||
| session_id | No | ||
| artifact_id | No | ||
| trust_state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations and no output schema, so the description carries the full burden, yet it only restates the return content. It never discloses pagination behavior despite a 'page' parameter, the default database being read, whether filtering is additive, or the shape/size of returned rows.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no waste and a front-loaded verb. However, brevity here reflects under-specification rather than disciplined conciseness, so it earns only a middling score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter filtered read with no annotations and no output schema, the description omits filter semantics, pagination, and the default store. It is not adequate to call the tool correctly without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters (db, page, session_id, artifact_id, trust_state), and the description adds no meaning for any of them. An agent cannot tell that session_id/artifact_id/trust_state are optional filters or what page does, so the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (return) and resource (provenance and trust rows) scoped to local evidence artifacts, which is enough to distinguish it from generic siblings like get_source_evidence. It is clear but does not name or contrast with any specific alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this tool versus get_source_evidence, query_artifact_index, or get_evidence_summary. No preconditions, no mention that filters are optional, nothing to route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rpc_traceC
Return semantic RPC observations and unresolved evidence limits.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden, but it only specifies return content in vague terms. It does not state read-only behavior, side effects, required permissions, pagination semantics, or return shape, all of which matter for an evidence/trace tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is under-specified rather than concise. It front-loads the verb, yet the remainder is too abstract to earn its place for a tool requiring more context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% parameter description coverage, the description is incomplete for a two-parameter lookup tool. It does not explain parameter meaning, usage context, or expected return format, leaving the agent with insufficient information to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, with two undocumented parameters (required 'name' and optional 'page'). The description adds no meaning for either parameter, leaving an agent unable to know what 'name' refers to or how pagination works.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb ('Return') and a resource area ('semantic RPC observations and unresolved evidence limits'), so the general purpose is implied. However, 'semantic RPC observations' is vague and the phrase 'unresolved evidence limits' is unclear, so an agent cannot confidently distinguish this from siblings like get_thread_trace or get_unresolved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no named alternatives despite many sibling tools. The description only states what is returned, leaving the agent with no routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sessionC
Return one session projection without merging evidence classes.
| Name | Required | Description | Default |
|---|---|---|---|
| db | No | evidence.sqlite3 | |
| page | No | ||
| end_ns | No | ||
| start_ns | No | ||
| session_id | Yes | ||
| trust_state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses one trait—no merging of evidence classes—but says nothing about read-only status, pagination, authentication needs, or return format. This is insufficient for a tool with six parameters and no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, it is too terse for a six-parameter tool and does not structure any usage or parameter guidance. Conciseness here edges toward under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters, 0% schema description coverage, no annotations, and no output schema. The description provides only one sentence and omits parameter meanings, usage context, and behavioral details. It is not complete enough for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters, and the description mentions none of them. Required parameter session_id, optional filters like start_ns/end_ns, trust_state, page, and db are left completely undocumented. The description does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Return one session projection.' It also adds a scope qualifier, 'without merging evidence classes,' but does not distinguish this tool from siblings such as get_session_manifest or list_sessions. The purpose is understandable, though 'projection' is domain-specific jargon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The phrase 'without merging evidence classes' hints at a specific condition, but it does not name alternatives or state when-not-to-use. An agent must infer the use case from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_manifestC
Return a read-only session manifest with separate evidence classes.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| names | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses only that the operation is read-only; it does not describe pagination behavior, required inputs, evidence-class semantics, or response characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, it is under-specified for a tool with required parameters and ambiguous evidence-class behavior, so its brevity is not fully effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, zero parameter-description coverage, an unexplained required 'names' argument, and many similar sibling tools, the description is far too incomplete to guide correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for two parameters, 'names' and 'page', and the description does not mention either parameter or how they should be used. No compensation is provided for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: return a read-only session manifest. However, 'separate evidence classes' is vague and does not distinguish this tool from siblings such as get_session, list_sessions, or get_evidence_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many sibling tools that also retrieve session or evidence data. No conditions, exclusions, or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_source_evidenceC
Return exact file/line/hash citations from a verified source bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| db | No | evidence.sqlite3 | |
| page | No | ||
| bundle | Yes | ||
| incident_id | Yes | ||
| function_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only operation ('Return') and hints at verification with 'verified source bundle', but says nothing about permissions, pagination (despite a page parameter), side effects, or output characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single, front-loaded sentence with zero filler. Every word contributes to conveying the tool's output, making it appropriately sized for a concise statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, no output schema, and 0% schema description coverage, the description is far too sparse. It omits parameter semantics, usage guidance, and behavioral context that an agent would need to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate. It only loosely maps to the 'bundle' parameter via 'source bundle' and gives no meaning for incident_id, function_ids, db, or page, leaving most parameters semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and resource ('exact file/line/hash citations from a verified source bundle'), which is more precise than a generic 'get source'. It does not explicitly differentiate itself from siblings like get_function_source or get_provenance, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives or prerequisites, and no context about when this tool is preferable to related tools such as get_function_source or get_provenance. The single sentence only describes the output, not the conditions for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thread_traceD
| Name | Required | Description | Default |
|---|---|---|---|
| tid | No | ||
| name | Yes | ||
| page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timelineD
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unresolvedC
Return only unresolved evidence for an agent-declared incident.
| Name | Required | Description | Default |
|---|---|---|---|
| db | No | evidence.sqlite3 | |
| page | No | ||
| incident_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the 'unresolved only' filter, which is genuinely useful, but says nothing about read-only nature, permissions, pagination behavior (a page parameter exists), or what the default db store implies. This is thin for an unannotated read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no waste, front-loading the verb and the key filter. It is appropriately sized, though brevity here borders on under-specification rather than true economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with zero schema description coverage, no annotations, and no output schema, the description is insufficient. It leaves the agent without pagination semantics, store selection, or return shape guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 3 parameters. The description only indirectly implies the incident_id requirement; the db and page parameters are completely unexplained in both schema and description. The description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (return) and resource (unresolved evidence) scoped to an agent-declared incident, which distinguishes it from siblings like get_evidence_summary or get_source_evidence. However, it does not explicitly contrast itself with the closest alternatives, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over get_source_evidence, get_incident_slice, or get_evidence_summary, and no prerequisites or exclusions are given. The phrase 'agent-declared incident' hints at context but does not tell the agent when this tool is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incidentsC
List bounded agent-declared incidents without causal inference.
| Name | Required | Description | Default |
|---|---|---|---|
| db | No | evidence.sqlite3 | |
| page | No | ||
| end_ns | No | ||
| start_ns | No | ||
| session_id | No | ||
| trust_state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses one meaningful trait—'without causal inference'—but omits read-only status, pagination behavior, return format, permissions, and any side-effect information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler. However, for a tool with six undocumented parameters, the extreme brevity leaves the definition feeling under-elaborated rather than optimally structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters, zero schema descriptions, no annotations, and no output schema, the description is far too thin. It states a purpose and one behavioral constraint but leaves parameter meaning, usage guidance, and most behavioral details entirely unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions none of the six parameters (db, page, start_ns, end_ns, session_id, trust_state). 'Bounded' may vaguely hint at time bounds, but no parameter semantics are actually conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs the verb 'List' with the resource 'incidents' and adds scope qualifiers 'bounded agent-declared' and 'without causal inference'. It clearly communicates the tool's purpose but does not distinguish it from sibling tools such as get_incident_report or get_incident_slice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The phrase 'agent-declared' hints at a category of incidents, but no usage context, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsC
List deterministic session summaries from a read-only evidence store.
| Name | Required | Description | Default |
|---|---|---|---|
| db | No | evidence.sqlite3 | |
| page | No | ||
| end_ns | No | ||
| start_ns | No | ||
| trust_state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does signal read-only behavior ('read-only evidence store'), but omits pagination behavior (there is a page parameter), filtering semantics, error conditions, and result shape. For a 5-param list tool with zero annotation coverage this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is concise, though partly because it omits required information rather than because it is efficiently packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and 5 undocumented parameters mean the description must do much more than it does. It lacks any coverage of filtering, pagination, return contents, or trusted-state semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description names none of the five parameters. Parameters like page, start_ns, end_ns, trust_state, and db are undocumented in both schema and description, so an agent must guess at their meaning and formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb and resource ('List ... session summaries') which is clear enough, but there are many session-related siblings (get_session, get_session_manifest, list_incidents) and the description does no sibling differentiation. The added qualifiers 'deterministic' and 'read-only evidence store' hint at scope but don't distinguish it from get_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative routing is given. An agent cannot tell from this sentence why it would call list_sessions instead of get_session or get_session_manifest.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_faultD
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| bundle | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_artifact_indexD
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| page | No | ||
| trace_id | No | ||
| correlation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_addressesD
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| bundle | No | ||
| addresses | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
24 tool updates
v1.1.0- First observed
check_store - First observed
collect_faults - First observed
discover_artifacts - First observed
get_call_relations - First observed
get_capabilities - First observed
get_evidence_summary - First observed
get_function_source - First observed
get_incident_report - First observed
get_incident_slice - First observed
get_process_participants - First observed
get_process_relations - First observed
get_provenance - First observed
get_rpc_trace - First observed
get_session - First observed
get_session_manifest - First observed
get_source_evidence - First observed
get_thread_trace - First observed
get_timeline - First observed
get_unresolved - First observed
list_incidents - First observed
list_sessions - First observed
open_fault - First observed
query_artifact_index - First observed
resolve_addresses
TDQS
Scored across 24 tools
Many tools share overlapping read-only reporting purposes (e.g., get_incident_report, get_session_manifest, get_incident_slice, get_evidence_summary) and eight tools lack descriptions entirely, making it hard to distinguish trace-related tools like get_thread_trace, get_rpc_trace, get_timeline, and get_call_relations. Boundaries are unclear for a significant portion of the set.
All tool names use snake_case with a consistent verb_noun structure (get_, list_, check_, open_, collect_, discover_, query_, resolve_). No mixing of conventions or casing styles.
With 24 tools, the set is on the heavy side for a fault-debugging server, and several tools appear to overlap in function, suggesting opportunities for consolidation. Still, the domain is complex enough that many capabilities are plausibly needed.
The surface covers sessions, incidents, traces, artifacts, source citations, and provenance, and includes tools for opening/collecting faults, which suggests broad lifecycle coverage. Some write/update/delete operations may be missing, but the read-focused debugging scope appears mostly complete.
Maintenance
Related MCP Connectors
Read-only verifier for 25 ProofRelay MCP tools and non-confidential evidence bundles.
Read-only game, setup, place, evidence and travel decision tools with explicit provenance.
Read-only XRP Ledger MCP tools with proof-annotation envelopes and signed daily snapshots.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Related MCP Servers
- FlicenseAqualityCmaintenanceMCP server for read-only forensic analysis of evidence files using local utilities (file, ExifTool, strings, Volatility).3-
- FlicenseNot gradedqualityBmaintenanceProvides read-only MCP tools to list archived snapshots, retrieve methodology and proof bundles, and verify supplied evidence bundles.-
- FlicenseNot gradedqualityCmaintenanceEnables querying enterprise records and retention policies from any MCP client over stdio, with read-only tools for searching records, fetching retention verdicts, identifying archival candidates, summarizing departments, forecasting retentions, and viewing audit history.-
- AlicenseNot gradedqualityAmaintenanceEnables evidence-first binary and firmware analysis through MCP, exposing tools to initialize projects, analyze artifacts, query structured claims, export results, and run evaluations.Apache 2.0