Skip to main content
Glama
parsiya

Trailmark MCP Server

by parsiya

Trailmark MCP-Server

Trailmark MCP-Server ist ein eigenständiger MCP-Wrapper um railofbits/trailmark.

Obwohl ich die Verwendung durch ToB mit Claude skills verstehe, erfordert mein Anwendungsfall einen MCP-Server, der mehrere Graphen analysieren und bereitstellen kann. Der Server kann mehrere Repositories scannen und das LLM kann Informationen von jedem einzeln anfordern.

Größtenteils erstellt mit OpenAI GPT-5.5 via Github Copilot in VS Code. Verweisen Sie Ihr LLM für Dokumentation und Entwicklungsunterstützung auf das Verzeichnis ai-docs.

Anforderungen

  • Python 3.12+

  • uv

Projekt-Metadaten:

  • Paketname: trailmark-mcp

  • CLI-Befehl: trailmark-mcp

Related MCP server: Processkit

Installation

Installieren Sie Laufzeit- und Entwicklungsabhängigkeiten:

uv sync --group dev

Schnellstart

Starten Sie den Server über stdio:

uv run trailmark-mcp serve --transport stdio

Smoke-Test des direkten Scan-Pfads ohne MCP-Client:

uv run trailmark-mcp scan /path/to/repo

Überspringen der Voranalyse während des Scans bei Bedarf:

uv run trailmark-mcp scan /path/to/repo --skip-preanalysis

Funktionsweise des Servers

Der primäre Lebenszyklus-Einstiegspunkt ist open_repository(...).

Zusammenfassung des Verhaltens:

  • Wenn kein Snapshot existiert, scannt der Server die Quelle, führt optional eine Voranalyse durch und speichert den ersten Snapshot.

  • Wenn ein Snapshot existiert und rescan=False gesetzt ist, lädt der Server den neuesten Snapshot in eine Live-Sitzung.

  • Wenn rescan=True gesetzt ist, baut der Server die Quelle neu auf und speichert einen frischen Snapshot.

Das bedeutet, der übliche Ablauf ist:

  1. open_repository aufrufen

  2. Graph-Tools gegen die zurückgegebene Sitzung verwenden

  3. save_snapshot nach bedeutsamen Mutationen im Arbeitsspeicher aufrufen, wenn Persistenz gewünscht ist

Sitzungsmodell

session_id ist ein Zustand des MCP-Wrappers, kein Zustand des Trailmark-Kerns.

Aktuelle Semantik:

  • Jeder open_repository(...)-Aufruf erstellt eine neue Sitzungs-ID.

  • Mehrere Live-Sitzungen können koexistieren.

  • Tools akzeptieren session_id, um einen bestimmten Graphen anzusprechen.

  • Eine weggelassene session_id verwendet die zuletzt geöffnete, noch aktive Sitzung.

  • Das Schließen der Standardsitzung befördert die zuletzt geöffnete verbleibende Sitzung.

Verwenden Sie current_repository(session_id=...), um zu überprüfen, auf welches Repository eine Sitzung verweist.

Öffentliche MCP-Tools

Lebenszyklus:

  • open_repository

  • current_repository

  • close_repository

  • save_snapshot

Navigation:

  • graph_summary

  • diff_graphs

  • search_nodes

  • callers_of

  • callees_of

  • ancestors_of

  • reachable_from

  • paths_between

  • entrypoint_paths_to

  • attack_surface

  • complexity_hotspots

  • functions_that_raise

Kontext und Mutation:

  • subgraph

  • annotations_of

  • findings

  • nodes_with_annotation

  • run_preanalysis

  • annotate_node

  • clear_annotations

  • augment_findings

Hinweise:

  • diff_graphs(before_session_id, after_session_id) behandelt after als den neuen Zustand.

  • search_nodes unterstützt contains, exact und suffix.

  • Entfernte Hilfsflächen wie scan_repository und tool_manifest sind absichtlich nicht mehr Teil der öffentlichen Laufzeit.

Snapshot-Verhalten

Snapshots werden unter dem analysierten Repository geschrieben, nicht unter diesem Server-Repository:

<target-repo>/.trailmark/snapshots/<timestamp>/

Aktuelle Snapshot-Artefakte beinhalten:

  • graph.json

  • summary.json

  • entrypoints.json

  • hotspots.json

  • subgraphs.json

  • scan-metadata.json

Snapshots unterstützen das Neuladen in eine Live-Sitzung. Verwenden Sie rescan=True, wenn Sie explizit einen frischen Neuaufbau aus der Quelle benötigen.

Repository-Struktur

Wichtige Dateien:

  • src/trailmark_mcp/cli.py: CLI-Einstiegspunkt für scan und serve

  • src/trailmark_mcp/mcp_app.py: MCP-Tool-Registrierung

  • src/trailmark_mcp/tool_catalog.py: deklarative Metadaten für bereitgestellte Tools

  • src/trailmark_mcp/services/registry.py: Sitzungsverfolgung

  • src/trailmark_mcp/services/runtime.py: Haupt-Laufzeitverhalten basierend auf Trailmark

Entwicklung

Führen Sie die fokussierte Testsuite aus:

uv run --group dev pytest tests/test_tool_catalog.py tests/test_registry.py tests/test_stdio_server.py

Die aktuelle CI führt dieselbe fokussierte Suite unter Python 3.12 aus.

Erweiterungsregel:

  1. Laufzeitverhalten hinzufügen oder ändern

  2. Tool in mcp_app.py registrieren

  3. Metadaten in tool_catalog.py aktualisieren

  4. Tests aktualisieren

  5. Dokumentation aktualisieren, falls sich das öffentliche Verhalten geändert hat

Verwendung in VS Code

VS Code kann diesen Server direkt über MCP mithilfe einer mcp.json-Datei auf Workspace-Ebene starten.

Typisches Setup:

  1. Öffnen Sie dieses Repository in VS Code

  2. Stellen Sie sicher, dass die Abhängigkeiten mit uv sync --group dev installiert sind

  3. Behalten Sie die Serverdefinition in .vscode/mcp.json bei

  4. Lassen Sie den MCP-Client den Server über stdio starten

Dieses Repository enthält bereits .vscode/mcp.json für die lokale Verwendung.

Beispiel mcp.json:

{
  "servers": {
    "trailmark-mcp": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "run",
        "trailmark-mcp",
        "serve",
        "--transport",
        "stdio"
      ]
    }
  }
}

Wenn Sie diesen Server aus einem größeren Multi-Projekt-Workspace verwenden, kopieren Sie dieselbe Definition in das .vscode/mcp.json des Workspace-Roots und stellen Sie sicher, dass der Befehl in einer Umgebung ausgeführt wird, in der uv und dieses Projekt verfügbar sind.

Available Tools

24 tools
ancestors_ofC

Return transitive callers that can reach the node.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'transitive callers' which implies recursive traversal, but does not disclose details such as whether cycles are handled, depth limits, performance implications, or what happens if the node is not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short (one sentence), but it is underspecified rather than concise. It lacks essential details and does not earn its place as a standalone explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations, zero schema coverage, and lack of output schema details, the description is grossly incomplete. It fails to clarify input semantics, behavior, or return value structure, making it insufficient for an agent to use reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the parameters. It does not describe 'name' (the target node) or 'session_id' (an optional session identifier), leaving the agent to guess their roles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Return transitive callers that can reach the node' uses a specific verb ('Return') and resource ('callers that can reach the node'), and the term 'transitive' distinguishes it from the sibling 'callers_of', which likely returns direct callers. However, it does not explicitly clarify what 'node' refers to (presumably the function named by 'name' parameter).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'callers_of' or 'callees_of'. It does not state context (e.g., call graph traversal), prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

annotate_nodeC

Attach an annotation to a graph node.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
kindYes
descriptionYes
sourceNoai
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must cover behavioral traits. It states 'attach an annotation' but does not specify whether it overwrites existing annotations, requires the node to exist, or what happens on duplicate annotation. Critical safety considerations are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise but under-specified. While it avoids verbosity, it sacrifices necessary detail, making it merely adequate rather than well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no annotations, and no parameter descriptions, the description is severely incomplete. An output schema exists but is not referenced. The tool's return value and behavioral constraints are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (no parameter descriptions), and the tool description adds no explanation of any parameters. 'name', 'kind', 'description', 'source', and 'session_id' are left entirely to the agent to infer from their titles and context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'attach' and resource 'annotation to a graph node,' clearly stating the action and target. It distinguishes from sibling tools like 'annotations_of' (retrieval) and 'clear_annotations' (deletion).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'annotations_of' or 'clear_annotations.' No context on prerequisites or edge cases is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

annotations_ofB

Return annotations for a node, optionally filtered by kind.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
kindNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies a read-only operation but does not disclose behavioral details like error handling (e.g., if node doesn't exist), performance, or authentication requirements. With no annotations, the description carries full burden but is basic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with nine words, front-loading the core functionality. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and an output schema exists, but the description misses context about the 'session_id' parameter and how annotations are returned. It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must explain all parameters. It only adds meaning for 'kind' (filtering) but does not explain 'name' (node identifier) or 'session_id'. This is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Return' and the resource 'annotations for a node', with an optional filter by kind. It effectively distinguishes from sibling tools like annotate_node (create) and clear_annotations (delete).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as nodes_with_annotation or annotate_node. The description lacks context about prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

attack_surfaceC

Return detected entrypoints and trust metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only says 'Return', implying a read operation, but does not disclose other behavioral traits such as cost, permissions needed, or whether it is safe to call repeatedly. The lack of detail leaves the agent uncertain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

At 6 words, the description is very concise but may be under-specified. It is front-loaded, but the brevity sacrifices essential detail, making it less helpful despite being efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema and a single optional parameter, the description is minimally adequate. However, it lacks context about how the returned data relates to security analysis and does not explain when this tool is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter 'session_id' with 0% description coverage, and the description does not explain its purpose or how to use it. The agent receives no additional meaning beyond the schema field name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it returns 'detected entrypoints and trust metadata', giving a specific verb and resource. However, it lacks differentiation from sibling tool 'entrypoint_paths_to', which also deals with entrypoints. The term 'trust metadata' is vague, and the overall purpose is not sharply defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'entrypoint_paths_to' or 'subgraph'. It does not mention prerequisites or context, leaving the agent to infer its sole use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

augment_findingsB

Import findings into the current graph from SARIF or weAudit.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
formatYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions the tool imports findings and the formats, but lacks details on side effects, permissions, or error conditions. With no annotations, more behavioral disclosure is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, but could be improved by front-loading the action and adding structured context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description lacks essential context about import behavior, such as whether findings are appended or replaced, and any important preconditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description hints at the 'format' parameter by naming SARIF and weAudit, but provides no additional meaning for 'path' or 'session_id', leaving gaps for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action ('Import findings'), the resource ('into the current graph'), and the sources ('from SARIF or weAudit'), making it clear and distinct from sibling tools like 'findings'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, no prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

callees_ofC

Return direct callees of a node.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It only states the basic function without disclosing edge cases, side effects, or requirements such as node existence or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one sentence), but it lacks critical details like parameter explanations. While concise, it is under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool returns graph data and has two undocumented parameters, the description is incomplete. It does not cover input requirements, output format, or edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds no meaning beyond parameter names. It does not explain what 'name' or 'session_id' represent, leaving the agent to infer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns direct callees of a node, using a specific verb and resource. It distinguishes from sibling 'callers_of' by specifying direction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'paths_between' or 'subgraph'. The description lacks context for selecting this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

callers_ofC

Return direct callers of a node.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist. The description omits critical behavioral details such as whether the operation is read-only, requires specific permissions, or has side effects. It only states 'return direct callers' without elaboration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, a single sentence. While not verbose, it lacks necessary detail, making it under-specified rather than effectively concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description does not hint at return values or pagination. Given 2 parameters and no parameter documentation, the description fails to provide a complete picture for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning beyond the schema. It does not explain what 'name' refers to (e.g., function name, node ID) or the purpose of 'session_id'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (return) and the resource (direct callers of a node). It distinguishes from 'callees_of' by specifying 'callers', but could be more specific about the graph context (e.g., call graph).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 siblings like 'ancestors_of' or 'paths_between'. No prerequisites or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_annotationsC

Remove annotations from a node.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
kindNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only states 'Remove annotations from a node' without details on scope (e.g., all annotations vs filtered by kind) or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but may be too terse for a tool with 3 parameters. It front-loads the purpose but omits necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and presence of output schema, description should provide more context on behavior (e.g., what happens if node doesn't exist, whether it returns results). Incomplete for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and description does not explain parameters. 'name' is required but not described; 'kind' and 'session_id' are absent from description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb and resource: 'Remove annotations from a node.' It is distinct from sibling tools like 'annotate_node' and 'annotations_of'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 or any prerequisites. The description does not mention when to use 'clear_annotations' over other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_repositoryB

Close an active repository session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states 'close an active repository session' without disclosing side effects, unsaved state handling, or impact on other tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded, but lacks essential details like return value or parameter format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description does not explain return values or confirm successful closure, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%; description adds no meaning beyond the parameter name 'session_id', leaving the agent to infer its purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action 'close' and resource 'active repository session', clearly distinguishing from siblings like open_repository.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a session needs to be closed, but offers no explicit guidance on when to use vs alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complexity_hotspotsC

Return nodes whose cyclomatic complexity meets the threshold.

ParametersJSON Schema
NameRequiredDescriptionDefault
thresholdNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose behavioral traits such as what types of nodes are considered, how the threshold is applied, or any side effects. The tool appears to be read-only but this is not confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, which is concise, but it lacks necessary details. It is appropriately front-loaded but under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has two parameters and no schema descriptions, the description is insufficient. It does not explain what nodes are returned, how threshold works, or the role of session_id. An output schema exists but the description adds no context about return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description only mentions the threshold parameter but does not explain its semantics beyond the name. The session_id parameter is completely undocumented. With 0% schema coverage, the description should compensate but fails to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Return'), the resource ('nodes'), and the specific condition ('cyclomatic complexity meets the threshold'). This distinguishes it from sibling tools that deal with nodes but not complexity thresholds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There are no exclusions, context for selection, or examples of appropriate use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

current_repositoryC

Return metadata for the active repository session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Does not disclose side effects, required permissions, or what 'metadata' includes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action. Concise but lacks detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even with an output schema, the description should clarify the role of 'session_id' and what constitutes 'active session'. Missing context reduces completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description adds no meaning about the 'session_id' parameter beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool returns metadata for the active repository session, distinguishing it from sibling tools like 'close_repository' or 'graph_summary'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Does not mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diff_graphsC

Return a structured diff of the after graph relative to the before graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
before_session_idYes
after_session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits like read-only nature, performance implications, or side effects. The term 'structured diff' is vague and does not clarify the output format or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundancy. However, it could be slightly expanded to include critical details without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, the description is not required to detail return values, but it fails to sufficiently explain what the diff contains (e.g., added/removed nodes, edges). The minimal description leaves agents guessing about the tool's exact behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning beyond parameter names. The parameters before_session_id and after_session_id are somewhat self-explanatory, but the description does not explain valid values or how to obtain session IDs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns a 'structured diff' of the after graph relative to the before graph, which differentiates it from sibling tools like graph_summary or callers_of. However, it does not explicitly name alternatives or elaborate on what 'structured diff' means.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives (e.g., subgraph, paths_between). No prerequisites mentioned, such as ensuring both sessions exist or that the graphs are compatible.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

entrypoint_paths_toC

Return paths from detected entrypoints to the target node.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
max_depthNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It only states the basic purpose, omitting how entrypoints are detected, whether max_depth is respected, or any side effects. Insufficient for a graph traversal tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise but under-informative given the tool's complexity and lack of annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Has an output schema but description doesn't hint at return structure. Three parameters with no guidance. Tool is moderately complex but description is minimal, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage and the description adds no information about parameters. Only 'name' is implied as target, but max_depth and session_id are unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (return paths) and resource (from entrypoints to target node). It distinguishes from siblings like ancestors_of but could be more specific about what 'detected entrypoints' means.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like paths_between or reachable_from. No mention of prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

findingsC

Return nodes carrying finding-style annotations.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations present, so description bears full burden. It only indicates a read operation with no side effects, but fails to explain what 'finding-style annotations' means or any behavioral details like permissions or state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence with no extraneous words. Efficient and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description omits crucial context such as parameter semantics and the meaning of 'finding-style annotations'. The tool is underspecified for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description does not mention the two parameters ('kind', 'session_id') or their roles. With 0% schema description coverage, the description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states verb 'Return' and resource 'nodes carrying finding-style annotations', clearly defining the tool's action and output. However, 'finding-style' is ambiguous and not differentiated from sibling tools like 'nodes_with_annotation'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 siblings, no exclusions or context provided. The description lacks any usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

functions_that_raiseC

Return functions whose parser-detected exception list includes the named exception.

ParametersJSON Schema
NameRequiredDescriptionDefault
exception_nameYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only says the tool returns functions based on parser-detected exceptions. There is no disclosure about side effects (it seems read-only), required permissions, or limitations (e.g., reliance on preanalysis). The behavioral scope is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence of 12 words, no redundancy. Front-loaded with the action and condition. However, it could be more complete by mentioning the source of functions (repository) without adding significant length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown), return values are clarified. However, the tool is part of a code analysis suite and likely requires a repository to be open and preanalysis run; this is not mentioned. The description is adequate but misses important setup context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add meaning. For 'exception_name', it clarifies that it is the named exception to search for. However, 'session_id' is not mentioned, and no details about format or constraints are given. The description partially compensates but is insufficient for full understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Return functions whose parser-detected exception list includes the named exception.' It specifies the verb (Return), resource (functions), and condition (parser-detected exception list includes the named exception). While unambiguous, it does not explicitly differentiate from siblings like 'nodes_with_annotation' or 'search_nodes', but the specialization to exceptions provides implicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'callers_of' or 'nodes_with_annotation'. The description only states what the tool does, not when it is appropriate or what preconditions exist (e.g., needing a repository open and preanalysis).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graph_summaryC

Return graph counts and dependency summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It states the tool returns data, implying a read operation, but does not mention side effects, required permissions, or what happens if the session_id is invalid. The minimal description fails to provide adequate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at 6 words, which is efficient but sacrifices necessary detail. It is front-loaded but lacks structure for multiple ideas.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists, the description does not explain return values. Given the low complexity (1 optional param), the description is still too incomplete to fully inform the agent about what 'graph counts' and 'dependency summary' entail, especially compared to sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter (`session_id`) with 0% schema description coverage. The description does not mention this parameter at all, failing to add any meaningful semantics beyond the schema itself. This is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and resource ('graph counts and dependency summary'), clearly indicating the tool's function. However, it does not specify which graph (e.g., current repository graph) or what exactly 'counts' and 'summary' entail, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus its siblings (e.g., `subgraph`, `reachable_from`). The description lacks context about appropriate scenarios or prerequisites, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nodes_with_annotationC

Return nodes carrying a specific annotation kind.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry full behavioral burden. It indicates a read-like operation but does not disclose potential side effects, performance implications, or authentication needs. The description is too minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, but too brief to be helpful. Lacks any additional context that could aid understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description does not explain how parameters like 'session_id' affect results or what constitutes a valid 'annotation kind'. Incomplete for a tool with multiple siblings and no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet description adds no explanation for the 'kind' parameter (e.g., expected format or examples) or the optional 'session_id' parameter. Fails to compensate for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (return nodes) and the filtering criterion (specific annotation kind). This distinguishes the tool from siblings like 'annotations_of' (returns annotations) and 'search_nodes' (general search).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives, such as 'annotations_of' or 'search_nodes'. Does not mention prerequisites or typical usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_repositoryC

Open a repository, loading latest snapshot or scanning source as needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes
languageNoauto
rescanNo
run_preanalysisNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should fully disclose behavioral traits. It mentions scanning source 'as needed' but gives no specifics about what triggers scanning, side effects, or required permissions. The tool might be destructive (e.g., overwriting data), but this is not clarified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one sentence) and front-loaded, but it lacks sufficient detail for a tool with four parameters. It is concise but at the expense of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, 0% schema coverage) and existence of output schema, the description is woefully incomplete. It provides no information about parameter defaults, behavior under different conditions, or how the tool affects the system state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining parameters. It fails to do so: it does not clarify the purpose of 'language', 'rescan', or 'run_preanalysis'. The only implicit hint is 'loading latest snapshot or scanning source' which vaguely relates to the rescan parameter but is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (open a repository) and the dual behavior (loading snapshot or scanning source), distinguishing it from sibling tools like close_repository or current_repository. However, it does not explicitly differentiate from other tools that might also interact with repositories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as the repository not being already open, or when the snapshot vs scanning behavior triggers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paths_betweenC

Return call paths between two nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
srcYes
dstYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It does not disclose any behavioral traits such as performance implications, limits on path length, or side effects. The tool could potentially return large results or require specific repository states, but nothing is mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise at one sentence, but it omits essential information. While brevity is valued, the description should include parameter details or usage context. It is not front-loaded with critical information for tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although there is an output schema, the description is incomplete for effective tool use. With no parameter explanations or usage guidance, the agent cannot reliably invoke this tool. The description fails to provide sufficient context beyond the basic purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no semantic information about the parameters. It does not explain what 'src', 'dst', or 'session_id' represent beyond their names, leaving the agent to infer meaning. This is a significant gap for a tool with three parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: returning call paths between two nodes. The verb 'Return' and the resource 'call paths' are specific, and the tool name 'paths_between' aligns well. It distinguishes from sibling tools like 'ancestors_of' or 'callees_of' which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or situations where other tools might be more appropriate. The description simply states what it does without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reachable_fromC

Return nodes transitively reachable from the source node.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry full burden. It only states 'transitively reachable' without detailing behavior like cycle handling, depth limits, or what happens if the source node is missing. This is insufficient for an agent to understand side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, but it omits critical information about parameters and behavior. Conciseness is not an excuse for incompleteness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (not shown), the description is too minimal for a graph traversal tool. It does not explain the meaning of 'transitively reachable' in the context of this server's graph model, nor does it clarify how results are structured.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has two parameters (name, session_id) with 0% description coverage. The description adds no explanation about these parameters, leaving the agent guessing what 'name' refers to (node name? graph name?) and what 'session_id' does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Return nodes transitively reachable from the source node' clearly states the verb (return) and resource (nodes with transitive reachability), and it distinguishes this tool from siblings like 'paths_between' or 'ancestors_of' by specifying the 'transitive' nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., 'paths_between' or 'subgraph'), nor does it mention any prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_preanalysisD

Run Trailmark preanalysis on the active engine.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

D1.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description fails to disclose any behavioral traits (e.g., side effects, permissions, state changes). The agent is left without essential safety information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it lacks the necessary detail to be effective. Under-specification is not true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description is incomplete. It provides no information about output, return values, or the overall context of the tool's operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 mention the 'session_id' parameter. It adds no meaning beyond the schema's definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Run Trailmark preanalysis on the active engine' identifies the action and resource, but 'Trailmark preanalysis' is vague and does not distinguish this tool from siblings like 'findings' or 'subgraph'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor any prerequisites or context. The description lacks explicit usage boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_snapshotC

Persist the current graph state under .trailmark/snapshots.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden of behavioral disclosure. It implies a write operation to disk but does not explain behavior such as overwrites, file naming, error handling, required permissions, or what constitutes 'current graph state'. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short (6 words), which is not necessarily a virtue here as it omits crucial details. It is front-loaded and readable, but fails to convey enough information for confident use.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a save operation with an output schema and one undocumented parameter), the description is severely lacking. It does not explain output, prerequisites, or parameter semantics, leaving significant gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'session_id' has zero schema description coverage and the tool description provides no explanation of its purpose, format, or default behavior. The agent has no guidance beyond the schema's type and nullability.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('persist') and resource ('current graph state') with a specific location ('.trailmark/snapshots'). It distinguishes from sibling tools which are primarily analysis or query-oriented, making the save intention unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, no prerequisites or context for invocation, and no mention of preconditions like having an active graph state or repository open.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_nodesC

Search graph nodes using contains, exact, or suffix matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
match_modeNocontains
limitNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It mentions matching modes but omits details like case sensitivity, pagination, side effects, or performance implications. This is a significant gap for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence. It is concise but could be slightly expanded to include parameter hints without losing efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description does not hint at what is returned. Combined with limited usage guidance and parameter semantics, the tool is not fully contextualized for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning for the 'match_mode' parameter by naming the allowed values, but it does not explain the 'query', 'limit', or 'session_id' parameters. With 0% schema description coverage, more compensation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Search' and resource 'graph nodes', and specifies matching modes (contains, exact, suffix), distinguishing it from some siblings. However, it does not explicitly differentiate from search-like siblings such as 'nodes_with_annotation' or 'reachable_from'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool vs. alternatives. With many sibling search tools, the agent is left to infer usage context, which is insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subgraphC

Return available subgraph names or the nodes in a named subgraph.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the dual behavior (listing names vs. nodes) and implies a read-only operation. However, with no annotations, it does not mention permissions, side effects, or other behavioral traits beyond the basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, achieving clarity with minimal length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool and the presence of an output schema, the description only partially covers the functionality. The lack of parameter explanations and usage context leaves significant gaps, especially with 0% schema description coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description fails to explain the parameters. The 'name' parameter is implied, but 'session_id' is not mentioned at all. This leaves the agent needing to infer parameter usage from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns either subgraph names or nodes in a named subgraph, with a specific verb and resource. It distinguishes two modes of operation based on the 'name' parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus siblings like 'ancestors_of' or 'search_nodes'. The description implies the context (getting subgraph info) but does not specify alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3/5.0
Disambiguation5/5

Each tool targets a distinct operation: graph traversal (ancestors_of, callees_of, callers_of, reachable_from), annotation management (annotate_node, annotations_of, clear_annotations, nodes_with_annotation), repository lifecycle (open_repository, close_repository, current_repository, save_snapshot), and analysis (attack_surface, complexity_hotspots, findings, etc.). No two tools have overlapping purposes.

Naming Consistency5/5

Tool names follow two predictable patterns: query-like operations use noun_of (e.g., ancestors_of, callees_of, callers_of) and action operations use verb_noun (e.g., annotate_node, open_repository, save_snapshot). This pattern is consistent throughout the set, with no mixing of casing styles or ambiguous verbs.

Tool Count4/5

With 24 tools, the count is slightly above the typical well-scoped range (3-15) but still appropriate for a comprehensive code analysis server covering graph traversal, annotations, repository management, and analysis features. The tools are logically grouped and each serves a distinct purpose, so the number does not feel excessive.

Completeness4/5

The tool surface covers core workflows: opening/closing repositories, scanning, traversing the call graph, managing annotations, and querying findings. Minor gaps exist, such as no tool to list all repositories (only current_repository) or to delete nodes/annotations, but these do not critically hinder typical use cases for a static analysis tool.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    F
    maintenance
    Provides a local code knowledge graph for Java projects, enabling querying of classes, methods, fields, calls, inheritance, and imports via MCP tools like query, context, impact, and cypher.
    1
  • A
    license
    Not graded
    quality
    B
    maintenance
    Standalone MCP harness for cross-system process evidence, code-change impact review, and natural-language repository checkout mapping, with optional accelerators like CodeGraph.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/parsiya/trailmark-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server