Find why a UDS flash failed from a CAN trace; decode UDS, ISO-TP and DTCs. No hardware.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Analyze a whole CAN trace of a UDS diagnostic or flash session and say what went wrong. Accepts candump logs, Vector ASC, PEAK TRC (1.x/2.x), SavvyCAN or python-can CSV pasted as text, and those plus Vector BLF, Wireshark pcap/pcapng (SocketCAN) and ASAM MF4 bus logging uploaded as a file. Reassembles ISO-TP, pairs requests with responses (including 0x78 responsePending), measures P2/P2*, follows sessions and security access, reconstructs RequestDownload/TransferData into an image with CRC32, extracts identification DIDs, and returns a root-cause finding with the frames that show it. Shows an interactive timeline.
An uploaded trace file: text formats above, or binary BLF, pcap, pcapng, MF4.
Trace text (candump, ASC, TRC or CSV). Use this or file.
Default auto-detect.
Analyze a whole CAN trace of a UDS diagnostic or flash session and say what went wrong. Accepts candump logs, Vector ASC, PEAK TRC (1.x/2.x), SavvyCAN or python-can CSV pasted as text, and those plus Vector BLF, Wireshark pcap/pcapng (SocketCAN) and ASAM MF4 bus logging uploaded as a file. Reassembles ISO-TP, pairs requests with responses (including 0x78 responsePending), measures P2/P2*, follows sessions and security access, reconstructs RequestDownload/TransferData into an image with CRC32, extracts identification DIDs, and returns a root-cause finding with the frames that show it. Shows an interactive timeline.
| Argument | Type | Description |
|---|---|---|
| file | object | An uploaded trace file: text formats above, or binary BLF, pcap, pcapng, MF4. |
| trace | string | Trace text (candump, ASC, TRC or CSV). Use this or file. |
| format | string | Default auto-detect. |
{
"type": "object",
"properties": {
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string"
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string"
}
},
"description": "An uploaded trace file: text formats above, or binary BLF, pcap, pcapng, MF4."
},
"trace": {
"type": "string",
"description": "Trace text (candump, ASC, TRC or CSV). Use this or file."
},
"format": {
"enum": [
"auto",
"candump",
"asc",
"trc",
"csv"
],
"type": "string",
"description": "Default auto-detect."
}
}
}Build a UDS request as hex with an annotated breakdown. Services: session, ecu_reset, read_did, write_did, security_seed, security_key, tester_present, routine, request_download, transfer_data, transfer_exit, clear_dtc, read_dtc, control_dtc, comm_control, raw. Numeric strings are hex.
| Argument | Type | Description |
|---|---|---|
| on | boolean | control_dtc: true = DTC setting on. |
| dfi | integer | dataFormatIdentifier, default 0. |
| did | string | |
| hex | string | raw: bytes to pass through. |
| key | string | security_key: key bytes in hex. |
| rid | string | routine: e.g. "FF00". |
| data | string | Hex payload (write_did, transfer_data, routine option record). |
| dids | array | read_did: e.g. ["F190","F18C"]. |
| mask | any | read_dtc status mask, default FF. |
| size |
Convert a 3-byte UDS DTC to the SAE J2012 style code (P/C/B/U + digits) plus failure type byte, or the reverse ("U0073-00" to hex). With a status byte, explains each of the 8 DTC status bits.
| Argument | Type | Description |
|---|---|---|
| dtc* | string | Three bytes hex ("01 23 45") or a code ("P0123-45"). |
| status | string | integer | Optional status byte, e.g. "0x09". |
{
"type": "object",
"required": [
"dtc"
],
"properties": {
"dtc": {
"type": "string",
"description": "Three bytes hex (\"01 23 45\") or a code (\"P0123-45\")."
},
"status": {
"type": [
"string",
"integer"
],
"description": "Optional status byte, e.g. \"0x09\"."
}
}
}Reassemble ISO-TP (ISO 15765-2) messages from CAN frames, per CAN id, and decode each as UDS. Reports frame types (SF/FF/CF/FC), flow-control BS/STmin, sequence-number errors, interrupted messages, padding, and N_Bs/N_Cr/STmin timing warnings when timestamps (ms) are given. Accepts a frame list or a candump text dump.
| Argument | Type | Description |
|---|---|---|
| frames* | any | Array of {id, data, t?} (id hex string or number, data hex string or byte array, t in ms), or a candump-style multiline string. |
| padding | boolean | true: warn on unpadded short frames; false: warn when padding bytes appear. |
| decodeUds | boolean | Decode each reassembled message as UDS (default true). |
{
"type": "object",
"required": [
"frames"
],
"properties": {
"frames": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"data"
],
"properties": {
"t": {
"type": "number"
},
"id": {
"type": [
"string",
"integer"
]
},
"data": {
"type": [
"string",
"array"
]
}
}
}
},
{
"type": "string"
}
],
"description": "Array of {id, data, t?} (id hex string or number, data hex string or byte array, t in ms), or a candump-style multiline string."
},
"padding": {
"type": "boolean",
"description": "true: warn on unpadded short frames; false: warn when padding bytes appear."
},
"decodeUds": {
"type": "boolean",
"description": "Decode each reassembled message as UDS (default true)."
}
}
}Decode a UDS (ISO 14229-1) PDU from hex: request, positive or negative response. Names the service, sub-function (and suppressPosRsp bit), DID/RID/address fields, and for negative responses the NRC with meaning and typical cause. Unknown SIDs and NRCs are labelled, not rejected.
| Argument | Type | Description |
|---|---|---|
| hex* | string | PDU bytes, e.g. "7F 34 78" or "0x22 0xF1 0x90" (no ISO-TP header). |
| direction | string | Optional hint to disambiguate. |
{
"type": "object",
"required": [
"hex"
],
"properties": {
"hex": {
"type": "string",
"description": "PDU bytes, e.g. \"7F 34 78\" or \"0x22 0xF1 0x90\" (no ISO-TP header)."
},
"direction": {
"enum": [
"request",
"response"
],
"type": "string",
"description": "Optional hint to disambiguate."
}
}
}Short UDS reference with ISO 14229-1 clause pointers (paraphrased). Topics: a service ID (0x27) or name, an NRC (0x78 or "nrc 78"), a DID (F190) or RID (FF00), timing (p2, p2*, s3), sessions, security (0x27 vs 0x29), reprogramming_sequence. Unknown topics return a topic list.
| Argument | Type | Description |
|---|---|---|
| topic* | string |
{
"type": "object",
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string"
}
}
}Plan how to integrate the UDSLib C stack (ISO 14229 UDS server/client for embedded ECUs): which repo files to take, Kconfig/config hints, an init skeleton, the closest example, and the license terms (free noncommercial / commercial). UDSLib speaks ISO-TP over CAN/CAN-FD; DoIP is not supported.
| Argument | Type | Description |
|---|---|---|
| role | string | |
| rtos | string | |
| target | string | MCU or board, e.g. "STM32F103", "H563". |
| features | array | dtc, dtc_persist, security, authentication, bootloader, flash_tool, custom_service, periodic, roe |
| transport | string |
{
"type": "object",
"properties": {
"role": {
"enum": [
"server",
"client"
],
"type": "string"
},
"rtos": {
"enum": [
"baremetal",
"freertos",
"zephyr",
"linux"
],
"type": "string"
},
"target": {
"type": "string",
"description": "MCU or board, e.g. \"STM32F103\", \"H563\"."
},
"features": {
"type": "array",
"items": {
"type": "string"
},
"description": "dtc, dtc_persist, security, authentication, bootloader, flash_tool, custom_service, periodic, roe"
},
"transport": {
"enum": [
"can",
"canfd",
"udp-sim"
],
"type": "string"
}
}
}| string |
| request_download: e.g. "0x10000". |
| type | any | session/ecu_reset sub-function (number, hex string or name). |
| group | string | clear_dtc group, default FFFFFF. |
| level | integer | security_seed/security_key: odd seed-request level; the key is sent with level+1. |
| action | string |
| address | string | request_download: e.g. "0x08000000". |
| control | any | comm_control control type. |
| counter | integer | transfer_data block sequence counter. |
| service* | string |
| commType | any | comm_control communicationType, default 01. |
| suppress | boolean | tester_present: set suppressPosRspMsgIndicationBit. |
| sizeBytes | integer | Default 4. |
| subfunction | any | read_dtc sub-function (e.g. 2 = reportDTCByStatusMask). |
| addressBytes | integer | Default 4. |
{
"type": "object",
"required": [
"service"
],
"properties": {
"on": {
"type": "boolean",
"description": "control_dtc: true = DTC setting on."
},
"dfi": {
"type": "integer",
"description": "dataFormatIdentifier, default 0."
},
"did": {
"type": "string"
},
"hex": {
"type": "string",
"description": "raw: bytes to pass through."
},
"key": {
"type": "string",
"description": "security_key: key bytes in hex."
},
"rid": {
"type": "string",
"description": "routine: e.g. \"FF00\"."
},
"data": {
"type": "string",
"description": "Hex payload (write_did, transfer_data, routine option record)."
},
"dids": {
"type": "array",
"items": {
"type": "string"
},
"description": "read_did: e.g. [\"F190\",\"F18C\"]."
},
"mask": {
"description": "read_dtc status mask, default FF."
},
"size": {
"type": "string",
"description": "request_download: e.g. \"0x10000\"."
},
"type": {
"description": "session/ecu_reset sub-function (number, hex string or name)."
},
"group": {
"type": "string",
"description": "clear_dtc group, default FFFFFF."
},
"level": {
"type": "integer",
"description": "security_seed/security_key: odd seed-request level; the key is sent with level+1."
},
"action": {
"enum": [
"start",
"stop",
"results"
],
"type": "string"
},
"address": {
"type": "string",
"description": "request_download: e.g. \"0x08000000\"."
},
"control": {
"description": "comm_control control type."
},
"counter": {
"type": "integer",
"description": "transfer_data block sequence counter."
},
"service": {
"enum": [
"session",
"ecu_reset",
"read_did",
"write_did",
"security_seed",
"security_key",
"tester_present",
"routine",
"request_download",
"transfer_data",
"transfer_exit",
"clear_dtc",
"read_dtc",
"control_dtc",
"comm_control",
"raw"
],
"type": "string"
},
"commType": {
"description": "comm_control communicationType, default 01."
},
"suppress": {
"type": "boolean",
"description": "tester_present: set suppressPosRspMsgIndicationBit."
},
"sizeBytes": {
"type": "integer",
"description": "Default 4."
},
"subfunction": {
"description": "read_dtc sub-function (e.g. 2 = reportDTCByStatusMask)."
},
"addressBytes": {
"type": "integer",
"description": "Default 4."
}
}
}