Skip to main content
Glama

canbus-mcp

A CAN bus reverse engineering MCP server for Claude Code. Lets Claude read, analyze, and map CAN bus messages from automotive and motorsport ECUs directly from the conversation.

Built around the PEAK PCAN-USB adapter. Designed for reverse engineering unknown CAN buses without DBC files — though DBC import/export is supported.

Hardware

Related MCP server: cc-session-search

Requirements

  • Python 3.11+

  • macOS or Windows

  • PEAK PCBUSB driver (macOS) or PEAK Windows driver

Installation

1. Install the PEAK driver

macOS:

PEAK does not provide a native macOS driver. Use the open-source PCBUSB library from mac-can.com:

  1. Download the PCBUSB package

  2. Run the installer — if install.sh does nothing, /usr/local/lib likely doesn't exist on your machine. Fix it manually:

sudo mkdir -p /usr/local/lib
sudo cp ~/Downloads/PCBUSB*/libPCBUSB.0.13.dylib /usr/local/lib/
sudo ln -sf /usr/local/lib/libPCBUSB.0.13.dylib /usr/local/lib/libPCBUSB.0.dylib
sudo ln -sf /usr/local/lib/libPCBUSB.0.dylib /usr/local/lib/libPCBUSB.dylib

Windows:

Download and install the PEAK driver from peak-system.com. No additional steps needed.

2. Install canbus-mcp

git clone https://github.com/YOUR_USERNAME/canbus-mcp
cd canbus-mcp
python3 -m venv .venv
source .venv/bin/activate      # Windows: .venv\Scripts\activate
pip install -e .

3. Add to Claude Code

claude mcp add canbus-re -s user \
  -e DYLD_LIBRARY_PATH=/usr/local/lib \
  -- /absolute/path/to/canbus-mcp/.venv/bin/python -m canbus_mcp.server

Replace /absolute/path/to/canbus-mcp with the actual path where you cloned the repo.

Windows: Use the full path to .venv\Scripts\python.exe and omit the DYLD_LIBRARY_PATH env var.

Restart Claude Code and run /mcp to confirm canbus-re appears as connected.

Usage

Start a Claude Code session and describe what you want to reverse engineer. The recommended workflow:

detect_baudrate_auto()     # auto-sniff bus speed from live traffic
connect()                  # open the interface
capture(duration=10)       # record frames
get_traffic_summary()      # see all message IDs, frequencies, DLCs
take_snapshot('idle')      # baseline snapshot

# trigger a physical event (press throttle, turn wheel, etc.)

capture(duration=5)
take_snapshot('event')
compare_snapshots('idle', 'event')   # find what changed

analyze_message(0x1A0)     # byte-level breakdown of a specific ID
track_signal(0x1A0, 2, 2)  # watch bytes [2:4] change over time
define_signal('engine_rpm', 0x1A0, 16, 16, scale=0.25, unit='rpm')
export_dbc('/path/output.dbc')

OBD2

For standard OBD2 vehicles (500k or 250k baud, 11-bit IDs):

check_obd2_support()    # check which PIDs are available
read_obd2_pids()        # query RPM, speed, throttle, temps, etc.

Tools

Tool

Description

list_interfaces

Show available hardware and current connection

detect_baudrate_auto

Auto-detect baud by listening for valid frames

connect

Open CAN interface

disconnect

Close interface

capture

Record frames for N seconds

take_snapshot

Save capture buffer as named snapshot

compare_snapshots

Diff two snapshots to find changed bytes

get_traffic_summary

All IDs: frequency, DLC, count

analyze_message

Per-byte entropy, counter/checksum detection

track_signal

Extract a byte range's values over time

define_signal

Name a discovered signal (bit position, scale, offset)

decode_frame

Decode raw hex against known signals

import_dbc

Load a DBC file

export_dbc

Export defined signals as DBC

check_obd2_support

Check OBD2 PID support

read_obd2_pids

Query all standard OBD2 PIDs

query_obd2_pid

Send a raw OBD2 request

Available Tools

21 tools
analyze_messageA

Deep-analyze a single CAN message ID across all captured frames. Reports per-byte entropy, counter/checksum detection, and signal candidates.

Args: can_id: CAN message ID in decimal (e.g. 1234) or use int('0x4B0', 16).

ParametersJSON Schema
NameRequiredDescriptionDefault
can_idYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description conveys it's an analysis tool (presumably read-only) and describes output features. However, it doesn't explicitly state non-destructive behavior or any side effects, leaving some ambiguity.

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?

Two front-loaded sentences plus a parameter line. No redundant information; each part adds value. Efficient and well-structured.

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

Completeness4/5

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

Given no output schema and one parameter, the description covers purpose, input format, and output nature. Minor gap: no mention of return data format (e.g., JSON structure) or requirement for active capture.

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

Parameters5/5

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

The single parameter 'can_id' is explained with both decimal and hex examples, adding meaning beyond the bare integer type. The schema has no description, so this fully compensates.

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 it deep-analyzes a single CAN message ID across captured frames, listing specific outputs (entropy, counter/checksum detection, signal candidates). This distinguishes it from sibling tools like decode_frame or track_signal.

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 alternatives. It implies use for single ID analysis but lacks when-not-to-use scenarios or comparisons with other tools.

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

captureA

Capture CAN frames for a fixed duration. Frames accumulate in the internal buffer for use by analysis tools.

Args: duration: Capture window in seconds. filter_ids: Optional list of decimal CAN IDs to capture. None = capture all.

ParametersJSON Schema
NameRequiredDescriptionDefault
durationNo
filter_idsNo

TDQS

A4/5.0
Behavior3/5

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

No annotations provided. Description discloses accumulation in buffer but omits blocking behavior, buffer limits, side effects, or error conditions. Partial disclosure with gaps.

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?

Two sentences plus a parameter list, front-loaded, no redundant information. Every sentence is useful.

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?

No output schema, so description should explain return values. It says frames accumulate but doesn't state what the function returns (e.g., status). Lacks error handling info.

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

Parameters5/5

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

Schema coverage is 0%; description fully explains both parameters: duration in seconds, filter_ids as optional list of decimal IDs with default capture all. Adds essential meaning.

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 it captures CAN frames for a fixed duration and frames accumulate in an internal buffer for analysis. This distinguishes it from siblings like take_snapshot (instantaneous) and clear_capture (clearing buffer).

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?

Implies usage for accumulating data, but no explicit when-to-use or when-not-to-use. No alternatives mentioned, e.g., compare to take_snapshot for different use cases.

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

check_obd2_supportA

Query OBD2 service 01 PID 00 to check if the vehicle supports OBD2 and which PIDs are available. Requires connection to the vehicle CAN bus (typically 500k or 250k baud on 11-bit ID bus).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must fully disclose behavior. It correctly indicates that a connection is required, but it does not explicitly state that this is a read-only operation or what happens if the connection fails. Overall adequate but not comprehensive.

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 concise with two sentences, no wasted words. It front-loads the primary action and follows with a requirement, making it easy to parse.

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

Completeness4/5

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

Given no parameters and no output schema, the description covers the core purpose and a critical prerequisite. However, it could briefly mention what the tool returns (e.g., a list of supported PIDs) to be fully complete.

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

Parameters4/5

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

The tool has no parameters, and the input schema coverage is 100%, so the description does not need to add parameter details. The baseline for 0 parameters is 4, which is appropriate here.

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 it queries OBD2 service 01 PID 00 to check support and available PIDs. It distinguishes from similar OBD2 tools like query_obd2_pid and read_obd2_pids by specifying the exact PID and purpose.

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 mentions the prerequisite of a CAN bus connection, but does not explicitly state when to use this tool versus alternatives like read_obd2_pids. Usage context is implied but not formally outlined.

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

clear_captureA

Clear all captured frames from the internal buffer. Does not affect snapshots.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Without annotations, the description carries full burden. It clarifies that snapshots are not affected, but does not disclose whether the action is irreversible or any other 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.

Conciseness4/5

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

The description is a single, clear sentence. It is appropriately sized and front-loaded, but could potentially include a bit more context.

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

Completeness4/5

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

Given no parameters and no output schema, the description provides adequate context for a simple action. It explains what it clears and what it does not affect.

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

Parameters4/5

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

No parameters are defined, and the input schema is empty with 100% coverage. Per guidelines, 0 parameters yields a baseline score of 4.

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 'clear' and the resource 'captured frames from the internal buffer'. It also explicitly notes that snapshots are unaffected, distinguishing it from sibling tools like 'take_snapshot'.

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?

No explicit guidance on when to use this tool versus alternatives. Usage is implied by the simple action, but no 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.

compare_snapshotsA

Diff two named snapshots to find which IDs and bytes changed.

Args: before_name: Label of the baseline snapshot. after_name: Label of the post-event snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
before_nameYes
after_nameYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It states a read-like operation (diff) but does not explicitly declare it as read-only or mention side effects. Could be more transparent about safety.

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?

Two sentences: one for purpose, one for args. Front-loaded, no extraneous words. Perfectly 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?

No output schema, so agent needs description of return format; description only says 'which IDs and bytes changed' without structure. Also missing context like required existence of snapshots.

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

Parameters4/5

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

Schema has 0% description coverage, but description adds brief definitions for both parameters ('Label of the baseline snapshot' and 'Label of the post-event snapshot'), providing meaning beyond the schema.

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 it diffs two snapshots to find changed IDs and bytes. Verb 'diff' plus resource 'snapshots' with specific output 'IDs and bytes changed'. Distinguishes from sibling tools like take_snapshot or list_snapshots.

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 alternatives (e.g., track_signal). Only implied that two snapshots are needed, but no preconditions or exclusions mentioned.

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

connectA

Open a connection to a CAN interface.

Args: interface: Interface type ('pcan' for PEAK PCAN-USB, 'virtual' for testing). channel: Channel name (e.g. 'PCAN_USBBUS1'). baudrate: Bus speed in bps. Common: 500000, 250000, 1000000, 125000.

ParametersJSON Schema
NameRequiredDescriptionDefault
interfaceNopcan
channelNoPCAN_USBBUS1
baudrateNo

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description only covers parameter meanings. It does not disclose behavioral traits such as what happens if already connected, error conditions, or whether the operation is safe/destructive.

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 concise, starting with a clear one-line purpose followed by a structured list of arguments. No unnecessary words.

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?

The description lacks crucial information such as return value (e.g., connection handle) and side effects (e.g., global state changes). Given the tool complexity and absence of output schema, this is insufficient.

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

Parameters5/5

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

With 0% schema description coverage, the description fully explains each parameter: interface types and examples, channel naming conventions, and common baudrates. This adds substantial meaning beyond the default values in the schema.

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 it opens a CAN interface connection, specifying supported interface types (pcan, virtual). This clearly distinguishes it from siblings like disconnect and list_interfaces.

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 this is a setup step before using other tools like capture or analyze_message, but provides no explicit guidance on when to use or avoid it, or alternatives.

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

decode_frameA

Decode a raw CAN frame against all known signal definitions for that CAN ID.

Args: can_id: CAN message ID. data_hex: Frame payload as a hex string, e.g. '0A1B2C3D4E5F6789'.

ParametersJSON Schema
NameRequiredDescriptionDefault
can_idYes
data_hexYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It does not state whether decoding modifies any state, what happens if the CAN ID has no known signal definitions, or any rate limits or permissions required. The lack of output format description also reduces transparency.

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 very concise with two sentences and a compact parameter list. Every word adds value, no redundancy or unnecessary details.

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?

For a tool with 2 parameters and no output schema, the description adequately explains inputs but fails to specify return values or output structure (e.g., decoded signals or errors). Lacking that, the description is not fully complete for an agent to anticipate results.

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

Parameters4/5

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

The input schema has 0% description coverage, so the description must compensate. It adds clear meanings for both parameters: can_id is 'CAN message ID' and data_hex is 'Frame payload as a hex string' with an example. This adds significant value beyond the schema's property names.

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 action ('Decode a raw CAN frame') and scope ('against all known signal definitions for that CAN ID'). It is a specific verb+resource combination that effectively distinguishes this tool from siblings like analyze_message or capture, which do not focus on decoding known signals.

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 analyze_message or track_signal. It does not mention prerequisites (e.g., signal definitions must exist), limitations, or scenarios where the tool is not appropriate.

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

define_signalA

Define a named signal from a CAN message (bit-level precision). Physical value = (raw * scale) + offset.

Args: name: Signal name, e.g. 'engine_rpm' or 'throttle_pct'. can_id: CAN message ID. start_bit: LSB position (little_endian) or MSB position (big_endian), 0-based. length: Signal width in bits. byte_order: 'little_endian' (Intel/LSB-first) or 'big_endian' (Motorola/MSB-first). value_type: 'unsigned' or 'signed'. scale: Multiplier for raw→physical conversion. offset: Addend for raw→physical conversion. unit: Physical unit string, e.g. 'rpm', 'km/h', '%', '°C'. description: Human-readable description.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
can_idYes
start_bitYes
lengthYes
byte_orderNolittle_endian
value_typeNounsigned
scaleNo
offsetNo
unitNo
descriptionNo

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. It explains what the tool does but does not disclose side effects (e.g., whether it creates, updates, or validates), persistence, or required state (e.g., established connection).

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 front-loaded with a one-line summary and formula, followed by a tidy list of parameter explanations. Every sentence is informative and none are superfluous.

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

Completeness4/5

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

The tool has 10 parameters, no output schema, and no schema descriptions. The description fully explains the purpose, conversion, and all parameters. However, it could briefly mention return value or success indication for completeness.

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

Parameters5/5

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

The description provides detailed explanations for all 10 parameters (e.g., name, start_bit, length, byte_order, value_type, scale, offset, unit, description). Since schema descriptions are absent (0% coverage), this adds essential meaning beyond the schema.

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 'Define a named signal from a CAN message (bit-level precision)' and includes the conversion formula. It distinguishes from sibling tools like remove_signal or list_signals by specifying creation/definition.

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 import_dbc or track_signal. The description does not mention prerequisites or context.

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

detect_baudrate_autoA

Auto-detect CAN bus baudrate by listening for valid frames at each common rate. Tries: 500k, 250k, 1M, 125k, 100k, 83.3k, 50k, 33.3k, 20k, 10k bps.

Requires live traffic on the bus. If the bus is idle, put the vehicle/ECU into a state that generates traffic (ignition on, engine running) before calling this.

Args: interface: CAN interface type. Use 'pcan' for PEAK PCAN-USB. channel: Interface channel. Default 'PCAN_USBBUS1' for first PCAN-USB device. timeout_per_rate: Seconds to listen at each baudrate before trying next.

ParametersJSON Schema
NameRequiredDescriptionDefault
interfaceNopcan
channelNoPCAN_USBBUS1
timeout_per_rateNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries burden. Lists rates and timeout behavior but does not disclose return value or failure handling.

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?

Front-loaded purpose, bullet-like list of rates, then requirement, then Args. No unnecessary words.

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?

No output schema and no description of return values. For a detection tool, output (baudrate or error) is important. Missing behavioral details.

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

Parameters5/5

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

Schema has 0% description coverage; description gives detailed explanations for all three parameters including defaults and examples.

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 it auto-detects CAN bus baudrate by listening at common rates. It is specific and distinguishes from siblings like analyze_message or connect.

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

Usage Guidelines4/5

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

Explicitly mentions requirement for live traffic and suggests generating traffic if idle. Does not compare to alternatives but provides clear context.

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

disconnectA

Close the current CAN interface connection.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must bear the full burden of behavioral disclosure. It only states the action without revealing side effects (e.g., discarding queued data), error conditions, or whether it blocks.

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?

A single sentence that immediately states the action with no extraneous words. Highly concise and front-loaded.

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?

While the tool is simple, the description omits prerequisites (must be connected), potential errors (e.g., already disconnected), and any post-conditions. Minimum viable but has gaps.

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

Parameters4/5

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

No parameters exist (100% schema coverage), so the baseline is 4. The description adds no extra parameter information, but none is needed.

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 'Close the current CAN interface connection,' using a specific verb and resource. It distinguishes itself from the sibling tool 'connect' implicitly, as it is the inverse operation.

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, such as requiring a prior connection or not disconnecting during active communication. No alternatives or exclusions are mentioned.

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

export_dbcA

Export all current signal definitions to a DBC file. Can be opened in SavvyCAN, PEAK PCAN-Explorer, CANdb++, etc.

Args: file_path: Absolute path for the output .dbc file.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

TDQS

A3.5/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 fails to disclose whether the operation overwrites or appends to the file path, any permissions needed, error states, or if it is synchronous. The description implies a read operation but it writes a file, making transparency crucial.

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 concise: two sentences plus a structured Args section. All information is front-loaded with no redundant words. Every sentence adds value.

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 no output schema and no annotations, the description covers the basic purpose and parameter, but lacks details on error handling, side effects (e.g., file overwrite), or scope of exported signals. For a file-writing tool, this is moderately incomplete.

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

Parameters4/5

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

The description clarifies that 'file_path' must be an absolute path for a '.dbc' file, adding meaning beyond the schema's generic 'File Path' string. With 0% schema coverage, this compensation is valuable, though it is limited to just one parameter.

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 'export' and resource 'all current signal definitions' with the output format 'DBC file'. It also mentions compatibility with common CAN tools, which adds context. This distinguishes it from siblings like import_dbc and list_signals.

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 import_dbc. It does not specify prerequisites, when not to use, or compare to other export or file-handling tools. Users are left to infer usage context.

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

get_traffic_summaryA

Summarize all captured message IDs: frame count, frequency, DLC, and category. High-frequency IDs (>100 Hz) are typically sensor loops. Low-frequency IDs (<5 Hz) are typically status or event-driven messages.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It discloses the output fields and provides behavioral interpretation of high/low frequency IDs, enhancing transparency about what the tool summarizes. It does not mention state changes, auth needs, or rate limits, but the tool appears read-only.

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?

Two concise sentences. The first sentence front-loads the core purpose and output fields. The second adds helpful interpretation. No filler or redundancy.

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

Completeness5/5

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

For a parameterless tool with no output schema, the description fully explains the output fields and provides useful frequency categorization. It is sufficiently complete for an agent to understand what will be returned.

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

Parameters4/5

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

No parameters exist, so the schema is trivially covered. The description adds value by specifying what the summary includes (frame count, frequency, DLC, category) beyond the empty schema, justifying a baseline of 4.

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: summarize all captured message IDs, listing specific attributes (frame count, frequency, DLC, category). This distinguishes it from sibling tools that operate on individual messages (e.g., analyze_message, decode_frame).

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?

No explicit guidance on when to use this tool versus alternatives. It implies use for an overall traffic overview but doesn't mention exclusions or specific scenarios. The frequency interpretation hints at usage context but is not a direct guideline.

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

import_dbcA

Import a DBC file and add its signal definitions to the current session. Signals are named as 'MessageName.SignalName'.

Args: file_path: Absolute path to the .dbc file.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description must fully disclose behavior. It mentions the naming convention but does not address side effects like overwriting existing signals, error handling, or file size limits. This is minimal transparency for an import operation.

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 extremely concise, with a one-line main description and a compact Args section. Every sentence provides value, and there is no redundant information.

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?

For a simple tool with one parameter and no output schema, the description covers the core purpose and parameter format. However, it omits details on return values, error scenarios, and whether existing signals are overwritten or appended, leaving some gaps.

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

Parameters4/5

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

The single parameter 'file_path' is described as 'Absolute path to the .dbc file', adding important constraints (absolute path, .dbc extension) beyond the schema's basic string type. With 0% schema description coverage, this provides meaningful guidance.

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 'Import', the resource 'DBC file', and the outcome 'add its signal definitions to the current session', with a specific naming convention for signals. This differentiates it from sibling tools like export_dbc or define_signal.

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 define_signal or list_signals. The description only explains the parameter without contextual usage advice.

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

list_interfacesA

List available CAN interface types, channels, and current connection status. Use this first to confirm what hardware/channels are available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations exist, but the description accurately reflects a read-only listing operation with no side effects. It doesn't mention potential latency or data size, but for a simple listing tool, the transparency is adequate.

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?

Two concise sentences that front-load the purpose and immediately follow with usage guidance. No redundant or missing information.

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

Completeness5/5

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

For a tool with no parameters and a straightforward listing task, the description fully covers what the tool does and when to use it. No output schema needed for such a simple result.

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

Parameters5/5

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

Input schema has zero parameters (100% coverage), so no parameter documentation is needed. The description correctly lists the output categories, which is sufficient.

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 states 'List available CAN interface types, channels, and current connection status' with a clear verb and resource, and it distinguishes from sibling tools by positioning it as a first-step discovery tool.

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

Usage Guidelines4/5

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

Explicitly says 'Use this first to confirm what hardware/channels are available,' providing clear when-to-use guidance. Does not list alternatives, but the directive is unambiguous for a discovery tool among siblings like connect or capture.

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

list_signalsA

List all defined signals in the current session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, but the description is straightforward and transparent about being a read-only listing operation. No hidden behaviors or side effects are implied.

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 sentence with no unnecessary words. Perfectly concise for the simplicity of the tool.

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

Completeness5/5

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

Given zero parameters, no output schema, and simple operation, the description is complete. It specifies scope ('current session') and action.

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

Parameters4/5

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

No parameters in schema, so baseline 4 is appropriate. The description does not need to add parameter details.

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 'list' and resource 'signals in the current session'. It distinguishes from siblings like define_signal and track_signal, which create or monitor signals.

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?

No explicit guidance on when to use or alternatives. Usage is implied for listing all defined signals, but lacks context on when this is preferable to other tools like analyze_message or track_signal.

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

list_snapshotsA

List all saved snapshots and their frame counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.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 carries full burden. It fails to disclose behavioral traits such as read-only nature, permission requirements, return format, or behavior when no snapshots exist.

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?

One succinct sentence of 8 words, front-loaded with key action and resource, with no redundant information.

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?

While the tool is simple with no parameters, the description could be more informative about return format or the nature of snapshots, especially since no output schema exists. It barely meets minimal completeness.

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

Parameters4/5

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

The input schema has zero parameters, so description adds no parameter semantics but also has no need to do so. The mention of 'frame counts' hints at output structure. Baseline for 0 params is 4.

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 lists all saved snapshots and their frame counts, using specific verb and resource. It distinctly differentiates from sibling tools like take_snapshot (create) and compare_snapshots.

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 for viewing all snapshots but provides no explicit guidance on when to use this tool versus alternatives like compare_snapshots or track_signal.

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

query_obd2_pidB

Send a raw OBD2 request and return the response bytes.

Args: service: OBD2 service number (e.g. 1 for current data, 3 for DTCs). pid: PID/subfunction number.

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceYes
pidYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must convey behavioral traits. It only states that it sends a request and returns bytes, but does not disclose whether it is read-only, any side effects, required permissions, or safety considerations. For a raw request tool, this is insufficient.

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 succinct, with a clear first sentence stating the purpose, followed by concise parameter descriptions. No extraneous information.

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?

For a simple 2-parameter tool without output schema or annotations, the description provides basic understanding. However, it omits details about the response format, error handling, or potential side effects, leaving gaps for an agent to use it correctly.

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

Parameters4/5

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

The description adds meaning to both parameters ('service' and 'pid') with examples and context (e.g., '1 for current data'), compensating for the schema's 0% description coverage. This provides the agent with necessary usage hints.

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: 'Send a raw OBD2 request and return the response bytes.' This is specific and distinguishes it from higher-level tools like 'read_obd2_pids' by emphasizing the 'raw' nature. However, it does not explicitly differentiate from siblings.

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 (e.g., 'read_obd2_pids'). The description lacks context about prerequisites, scenarios, or exclusions.

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

read_obd2_pidsB

Query all known OBD2 PIDs (RPM, speed, throttle, temps, MAF, fuel level, etc.) and return decoded physical values.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/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 states it queries and returns decoded values, but does not disclose if it is read-only, if it requires a connection, or if it blocks. Lacks information about potential latency or empty results.

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 sentence with clear verb and examples. No redundancy. Front-loaded with key action.

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

Completeness4/5

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

For a no-parameter tool with minimal complexity, description covers purpose and return type. Lacks prerequisites but overall adequate. Output schema not provided, so no need to cover return structure.

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?

No parameters in schema, coverage 100%. Baseline is 3 per guidelines. Description adds no parameter-specific info beyond schema, but no parameters exist to explain.

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 it queries all known OBD2 PIDs and returns decoded physical values. Lists examples like RPM, speed, throttle. Distinguishes from sibling 'query_obd2_pid' which queries a single PID.

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 'query_obd2_pid' or 'check_obd2_support'. No mention of prerequisites such as needing a prior connection.

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

remove_signalB

Remove a signal definition by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.1/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 disclose behaviors. It mentions 'remove' implying a destructive action but does not specify if the operation is irreversible, what permissions are required, or any side effects. The transparency 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. Every element serves the purpose efficiently.

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 low complexity (1 param, no output schema), the description is overly minimal. It lacks crucial context about removal safety, reversibility, and impact on other operations, leaving the agent with incomplete guidance.

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 input schema has a single required parameter 'name' (string) with 0% schema description coverage. The description adds no extra meaning beyond the schema, failing to compensate for the lack of schema documentation.

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 'Remove a signal definition by name' clearly states the action (remove) and resource (signal definition). It effectively distinguishes from sibling tools like define_signal, list_signals, and track_signal.

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 given on when to use this tool versus alternatives (e.g., define_signal, list_signals). There is no mention of prerequisites, context, 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.

take_snapshotA

Save the current capture buffer as a named snapshot.

Use this for before/after comparison:

  1. Capture baseline traffic → take_snapshot('idle')

  2. Trigger an action (press throttle, turn steering, etc.)

  3. Capture again → take_snapshot('throttle_pressed')

  4. compare_snapshots('idle', 'throttle_pressed') to find changed bytes

Args: name: Snapshot label.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A4/5.0
Behavior3/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 states the tool saves a snapshot but does not disclose behavioral details like persistence, overwrite behavior, or side effects on the capture buffer. Adequate but incomplete.

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 concise, well-structured with a bullet-like workflow, and every sentence adds value. No redundant or filler content.

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

Completeness4/5

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

Given the low complexity (single string parameter, no output schema), the description covers the core usage and purpose. However, it omits details like return value or behavior on duplicate names, which would be helpful but not critical.

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?

With 0% schema description coverage, the description must compensate. It adds 'name: Snapshot label,' which is a slight improvement over the schema's 'Name' but lacks constraints like uniqueness or length limits. Baseline 3 is appropriate.

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 'Save the current capture buffer as a named snapshot' with a specific verb and resource, and the step-by-step before/after workflow clearly distinguishes it from siblings like compare_snapshots and capture.

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

Usage Guidelines4/5

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

Provides a concrete usage workflow with steps and an example (idle, throttle_pressed), making it clear when to use this tool. Lacks explicit when-not-to-use or alternatives, but the context of sibling tools compensates.

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

track_signalA

Extract a byte range from captured frames and show how the value changes over time. Use this to observe a candidate signal while correlating with physical inputs.

Args: can_id: CAN message ID. start_byte: First byte index (0-based). num_bytes: How many consecutive bytes to read (1–4). signed: Interpret as signed integer. scale: Physical = raw * scale + offset. offset: Physical = raw * scale + offset. byte_order: 'little_endian' (Intel) or 'big_endian' (Motorola).

ParametersJSON Schema
NameRequiredDescriptionDefault
can_idYes
start_byteYes
num_bytesNo
signedNo
scaleNo
offsetNo
byte_orderNolittle_endian

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It explains the parameter roles and transformation (raw to physical), but it does not specify important details like whether the operation is read-only (no destructive hint), how 'show' manifests (return format, real-time vs historical), or prerequisites (e.g., a capture must be active). The description is adequate but leaves gaps in transparency.

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 exceptionally concise: two sentences of purpose followed by a structured parameter list. Every sentence adds value—the first states the action, the second gives the use-case context. No fluff or repetition. The docstring format is clean and easy to parse.

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 description explains the 'what' and 'why' well, but given the tool's complexity (7 parameters, no output schema, no annotations), it is incomplete on 'how'. It omits the output format (a table, plot, or sequence?), whether it operates on real-time or captured data, and any dependencies (e.g., a successful capture). This leaves the agent uncertain about invocation prerequisites and return handling.

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

Parameters5/5

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

Schema description coverage is 0%, so the description bears full responsibility for explaining parameters. The description includes a parameter list with clear, concise explanations for all 7 parameters (e.g., 'can_id: CAN message ID.'), far exceeding the schema's minimal title/type. It adds meaning, especially for scaling and byte order, which are nontrivial.

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 extracts a byte range from captured frames and shows value changes over time, using a specific verb ('Extract') and resource ('byte range from captured frames'). It distinguishes from sibling tools like 'decode_frame' by emphasizing temporal tracking (over time) and correlation with physical inputs, which is unique among the listed siblings.

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

Usage Guidelines4/5

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

The description provides a clear use case: 'Use this to observe a candidate signal while correlating with physical inputs.' This tells the agent when to use the tool (for exploratory analysis of a signal over time). However, it does not explicitly state when not to use it or mention alternative tools, but the given context is sufficient for basic guidance.

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. Dates show when Glama detected each change.

  1. 21 tool updatesv0.1.0
    • First observedanalyze_message
    • First observedcapture
    • First observedcheck_obd2_support
    • First observedclear_capture
    • First observedcompare_snapshots
    • First observedconnect
    • First observeddecode_frame
    • First observeddefine_signal
    • First observeddetect_baudrate_auto
    • First observeddisconnect
    • First observedexport_dbc
    • First observedget_traffic_summary
    • First observedimport_dbc
    • First observedlist_interfaces
    • First observedlist_signals
    • First observedlist_snapshots
    • First observedquery_obd2_pid
    • First observedread_obd2_pids
    • First observedremove_signal
    • First observedtake_snapshot
    • First observedtrack_signal

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct operation or concept: capture vs. analysis vs. signal definition vs. OBD2. Tools like analyze_message, decode_frame, and track_signal have clearly different purposes (deep analysis, decoding, time-series tracking). No overlapping functionality.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., 'analyze_message', 'capture', 'list_signals'). No mixing of styles or vague verbs; names are descriptive and predictable.

Tool Count4/5

21 tools is on the higher end but justified by the complex domain (CAN bus analysis, signal definition, OBD2, snapshots). Each tool covers a necessary function without feeling bloated.

Completeness4/5

Covers core workflow: capture→signal discovery→definition→export. Includes OBD2 support and snapshot comparison. Minor gaps: no signal editing (only define/remove), no frame sending. But the surface is well-rounded for a monitoring/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

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that integrates Ghidra for binary analysis, enabling decompilation, disassembly, and advanced reverse engineering tasks through Claude Code.
    15
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that gives Claude AI the ability to read, analyze, modify, and debug ANTLR4 grammars, enabling grammar debugging and manipulation for Claude Desktop.
    55
    -

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/harrisonfaulkner/canbus-mcp'

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