Skip to content

artomatica/uds-toolbox

v1.1.0MIT

Analyze CAN traces of UDS (ISO 14229) diagnostic and flash sessions, and decode UDS, ISO-TP and DTC data.

MCP servers

Declared configuration, as published in mcp.json. The directory shows indexed content; it never connects to or executes these servers.

uds-toolboxstreamable-http
{
  "type": "streamable-http",
  "url": "https://mcp.udslib.com/mcp"
}

What this package declares

The files a client reads when it loads this plugin, exactly as this revision carries them.

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "uds-toolbox",
  "version": "1.1.0",
  "description": "Analyze CAN traces of UDS (ISO 14229) diagnostic and flash sessions, and decode UDS, ISO-TP and DTC data.",
  "author": {
    "name": "Andrii Shylenko",
    "url": "https://udslib.com"
  },
  "homepage": "https://udslib.com/mcp.html",
  "repository": "https://github.com/Artomatica/udslib.com",
  "license": "MIT",
  "keywords": [
    "uds",
    "iso-14229",
    "iso-tp",
    "can",
    "dtc",
    "automotive",
    "diagnostics"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "UDS Toolbox",
        "shortDescription": "Find why a UDS flash failed",
        "developerName": "Andrii Shylenko",
        "category": "Developer Tools",
        "websiteURL": "https://udslib.com/mcp.html",
        "defaultPrompt": [
          "Here is my CAN trace of a failed ECU flash. Why did it fail?",
          "My ECU answered 7F 34 78. What does it mean?",
          "Build a RequestDownload for 0x08000000, 64 KiB."
        ],
        "longDescription": "UDS Toolbox finds out why a UDS (ISO 14229) diagnostic or flash session failed. Attach or paste a CAN trace from candump, Vector CANoe/CANalyzer (ASC), PEAK PCAN-View (TRC) or SavvyCAN/python-can (CSV) and it reassembles ISO-TP, pairs every request with its response (including 0x78 responsePending), measures P2/P2* timing, follows sessions and security access, rebuilds the downloaded image with its CRC32, and names the root cause with the frames that show it. The result opens as an interactive timeline. It also decodes single UDS messages, ISO-TP frames and DTCs, builds request bytes, and answers reference questions. No account, no hardware; nothing you send is stored. Made by the authors of the UDSLib embedded stack.",
        "supportURL": "https://udslib.com/terms.html#support",
        "privacyPolicyURL": "https://udslib.com/privacy.html",
        "termsOfServiceURL": "https://udslib.com/terms.html",
        "capabilities": [
          "Analyze CAN traces",
          "Decode UDS messages",
          "Decode ISO-TP CAN traces",
          "Build UDS requests",
          "Decode DTCs"
        ],
        "logo": "./assets/icon.svg",
        "composerIcon": "./assets/icon.svg"
      },
      "onboardingSkill": "./skills/uds-toolbox/SKILL.md",
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Find the root cause of a failed flash in a trace file",
              "prompt": "Here is a PEAK PCAN-View trace of a failed ECU flash (attach https://udslib.com/viewer/examples/flash-fail.trc). Why did it fail?",
              "tools_triggered": "analyze_trace",
              "expected_behavior": "Shows the trace viewer and states the root cause: TransferData block #4 was refused with 7F 36 73 wrongBlockSequenceCounter after blocks 1 and 2 (512 of 1024 bytes), then the ECU did not answer the next eraseMemory request. Also reports the earlier rejected security key and the VIN W0L000043MB541326."
            },
            {
              "description": "Explain a negative response from an ECU.",
              "prompt": "My ECU answered 7F 34 78 to a RequestDownload. What does that mean?",
              "tools_triggered": "decode_uds",
              "expected_behavior": "Explains it is a negative response to RequestDownload (0x34) with NRC 0x78 responsePending: not an error, the ECU needs more time, and the tester should wait using the extended P2* timeout."
            },
            {
              "description": "Reassemble a multi-frame ISO-TP trace.",
              "prompt": "Decode this CAN trace: 7E8 10 0B 62 F1 90 57 30 4C, 7E0 30 00 00, 7E8 21 31 32 33 34 35 36",
              "tools_triggered": "decode_isotp",
              "expected_behavior": "Reassembles one 11-byte message on 0x7E8 (62 F1 90 57 30 4C 31 32 33 34 35), identifies the flow control frame, and decodes it as a positive ReadDataByIdentifier response for DID F190 (VIN)."
            },
            {
              "description": "Build request bytes for flashing.",
              "prompt": "Build the UDS RequestDownload for address 0x08000000, 64 KiB, no compression.",
              "tools_triggered": "build_uds_request",
              "expected_behavior": "Returns 34 00 44 08 00 00 00 00 01 00 00 with a breakdown: dataFormatIdentifier 00, addressAndLengthFormatIdentifier 44, address 0x08000000, size 0x10000."
            },
            {
              "description": "Decode a DTC and its status byte.",
              "prompt": "What is DTC C0 73 00 with status 0x2F?",
              "tools_triggered": "decode_dtc",
              "expected_behavior": "Returns U0073-00 (network domain) and lists the set status bits: testFailed, testFailedThisOperationCycle, pendingDTC, confirmedDTC, testFailedSinceLastClear."
            }
          ],
          "negative": [
            {
              "description": "Reject non-hex input",
              "prompt": "Decode this UDS message: ZZ 12",
              "tools_triggered": "decode_uds",
              "expected_behavior": "The tool rejects the input as not valid hex and says so; it does not invent a decoding."
            },
            {
              "description": "Reject an invalid security level",
              "prompt": "Build a SecurityAccess requestSeed for level 2.",
              "tools_triggered": "build_uds_request",
              "expected_behavior": "The tool rejects it because requestSeed levels are odd (level 2 is the matching sendKey); it explains instead of returning bytes."
            },
            {
              "description": "Reject an empty trace",
              "prompt": "Decode this ISO-TP trace: (nothing pasted)",
              "tools_triggered": "decode_isotp",
              "expected_behavior": "The tool reports that no frames were given and asks for the trace; it does not fabricate frames."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "This plugin does not process purchases or payments. The UDSLib library license is sold separately by email.",
        "demo_recording_url": "https://udslib.com/review/walkthrough.mp4"
      },
      "publication": {
        "release_notes": "1.1.0 adds analyze_trace: upload or paste a candump, ASC, TRC or CSV trace and get the root cause of a failed UDS session or flash, with an interactive timeline. Seven offline, read-only tools at https://mcp.udslib.com/mcp; nothing stored."
      }
    }
  }
}

What else this package ships

These files come with the package and this site does not publish them. They are listed so you know what is there before you install it.

  • openai.yaml
  • LICENSE
View on GitHub

Client extensions

Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.

  • com.openai