canbus-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@canbus-mcpcapture CAN bus frames for 10 seconds"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
PEAK PCAN-USB (IPEH-002021)
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:
Download the PCBUSB package
Run the installer — if
install.shdoes nothing,/usr/local/liblikely 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.dylibWindows:
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.serverReplace /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 |
| Show available hardware and current connection |
| Auto-detect baud by listening for valid frames |
| Open CAN interface |
| Close interface |
| Record frames for N seconds |
| Save capture buffer as named snapshot |
| Diff two snapshots to find changed bytes |
| All IDs: frequency, DLC, count |
| Per-byte entropy, counter/checksum detection |
| Extract a byte range's values over time |
| Name a discovered signal (bit position, scale, offset) |
| Decode raw hex against known signals |
| Load a DBC file |
| Export defined signals as DBC |
| Check OBD2 PID support |
| Query all standard OBD2 PIDs |
| Send a raw OBD2 request |
Available Tools
21 toolsanalyze_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).
| Name | Required | Description | Default |
|---|---|---|---|
| can_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| duration | No | ||
| filter_ids | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| before_name | Yes | ||
| after_name | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| interface | No | pcan | |
| channel | No | PCAN_USBBUS1 | |
| baudrate | No |
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| can_id | Yes | ||
| data_hex | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| can_id | Yes | ||
| start_bit | Yes | ||
| length | Yes | ||
| byte_order | No | little_endian | |
| value_type | No | unsigned | |
| scale | No | ||
| offset | No | ||
| unit | No | ||
| description | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| interface | No | pcan | |
| channel | No | PCAN_USBBUS1 | |
| timeout_per_rate | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | ||
| pid | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description 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.
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.
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.
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.
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.
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:
Capture baseline traffic → take_snapshot('idle')
Trigger an action (press throttle, turn steering, etc.)
Capture again → take_snapshot('throttle_pressed')
compare_snapshots('idle', 'throttle_pressed') to find changed bytes
Args: name: Snapshot label.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| can_id | Yes | ||
| start_byte | Yes | ||
| num_bytes | No | ||
| signed | No | ||
| scale | No | ||
| offset | No | ||
| byte_order | No | little_endian |
TDQS
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.
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.
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.
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.
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.
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.
21 tool updates
v0.1.0- First observed
analyze_message - First observed
capture - First observed
check_obd2_support - First observed
clear_capture - First observed
compare_snapshots - First observed
connect - First observed
decode_frame - First observed
define_signal - First observed
detect_baudrate_auto - First observed
disconnect - First observed
export_dbc - First observed
get_traffic_summary - First observed
import_dbc - First observed
list_interfaces - First observed
list_signals - First observed
list_snapshots - First observed
query_obd2_pid - First observed
read_obd2_pids - First observed
remove_signal - First observed
take_snapshot - First observed
track_signal
TDQS
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.
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.
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.
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
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
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
- CanvaOAuthcom.canva.mcp
The Canva MCP server connects AI assistants (like Claude, ChatGPT, and Cursor) to Canva's API, enabling them to create and manage designs directly within chat conversations. Key capabilities include generating new designs from prompts, autofilling templates, searching and resizing existing designs, importing files from URLs, exporting designs as PDFs or images, and managing folders and comments without switching between tools.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server that integrates Ghidra for binary analysis, enabling decompilation, disassembly, and advanced reverse engineering tasks through Claude Code.15MIT
- FlicenseBqualityDmaintenanceAn MCP server that provides tools for searching and analyzing Claude Code conversation history.84-
- AlicenseAqualityBmaintenanceAn MCP server that lets Claude Code recall the context of past conversations from any project on demand.5522MIT
- FlicenseAqualityDmaintenanceAn 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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