{"name":"io.github.AIops-tools/ot-aiops","slug":"aiops-tools-ot-aiops","title":"OT AIops","description":"Governed OT tap (57 tools): OPC-UA/Modbus/S7/MC/MTConnect/MQTT/EtherNet-IP/EtherCAT.","url":"https://mcp.market/server/aiops-tools-ot-aiops","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":27,"stars":2,"forks":0,"downloads_week":34,"last_push_at":"2026-09-19T01:02:11.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/AIops-tools/OT-AIops","website":null,"version":"0.3.0","remotes":[],"packages":[{"registryType":"pypi","identifier":"ot-aiops","version":"0.3.0","transport":{"type":"stdio"}}],"tools":[{"name":"_safe_error","description":"Return an agent-safe error string; log full detail server-side only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"alarm_bad_actors","description":"[READ][risk=low] ISA-18.2 alarm-flood analysis over a list of alarm events.","write_action":false,"price_micros":0,"input_schema":null},{"name":"anomaly_scan","description":"[READ] Sample a node over a bounded window and flag statistical outliers.","write_action":false,"price_micros":0,"input_schema":null},{"name":"asset_inventory","description":"[READ][risk=low] Actively fingerprint endpoints into an asset register.","write_action":false,"price_micros":0,"input_schema":null},{"name":"diagnose_dataflow","description":"[READ][risk=low] Localize a 'no data' break across an endpoint's reachable hops.","write_action":false,"price_micros":0,"input_schema":null},{"name":"downtime_events","description":"[READ][risk=low] Detect running→stopped transitions and categorize stoppages.","write_action":false,"price_micros":0,"input_schema":null},{"name":"eip_controller_info","description":"[READ][risk=low] Logix controller identity (proves the CIP link).","write_action":false,"price_micros":0,"input_schema":null},{"name":"eip_list_tags","description":"[READ][risk=low] Discover the controller's tag list (names/types/structures).","write_action":false,"price_micros":0,"input_schema":null},{"name":"eip_read_many","description":"[READ][risk=low] Batch-read many Logix tags in one request (auto multi-packet).","write_action":false,"price_micros":0,"input_schema":null},{"name":"eip_read_tag","description":"[READ][risk=low] Read one Logix tag (or array element) with its type.","write_action":false,"price_micros":0,"input_schema":null},{"name":"eip_write_tag","description":"[WRITE][risk=HIGH][MOC] Write ONE value to a Logix tag (off by default).","write_action":true,"price_micros":0,"input_schema":null},{"name":"ethercat_master_state","description":"[READ][risk=low] Open the master on the configured NIC; report bus state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ethercat_read_pdo","description":"[READ][risk=low] One cyclic snapshot of a slave's input process-data image.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ethercat_read_sdo","description":"[READ][risk=low] CoE SDO upload: read one object-dictionary entry (acyclic).","write_action":false,"price_micros":0,"input_schema":null},{"name":"ethercat_set_state","description":"[WRITE][risk=HIGH][MOC] Request an AL-state transition (off by default).","write_action":false,"price_micros":0,"input_schema":null},{"name":"ethercat_slave_info","description":"[READ][risk=low] Detail one slave: identity, SM/FMMU config, OD summary.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ethercat_slaves","description":"[READ][risk=low] Bus scan: enumerate every slave on the segment.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ethercat_write_sdo","description":"[WRITE][risk=HIGH][MOC] CoE SDO download: write one OD entry (off by default).","write_action":true,"price_micros":0,"input_schema":null},{"name":"health_summary","description":"[READ] Classify OPC-UA tag node-ids against warn/alarm thresholds.","write_action":false,"price_micros":0,"input_schema":null},{"name":"historian_health","description":"[READ][risk=low] Bad-tag / flatline / gap detection over a provided series.","write_action":false,"price_micros":0,"input_schema":null},{"name":"main","description":"Run the MCP server over stdio.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mc_cpu_status","description":"[READ][risk=low] MELSEC CPU type/code (proves the MC link is alive).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_read_bits","description":"[READ][risk=low] Batch-read bit devices from a head device.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_read_many","description":"[READ][risk=low] Random-read scattered word + dword devices in one request.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_read_words","description":"[READ][risk=low] Batch-read 16-bit word devices from a head device.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_write_words","description":"[WRITE][risk=HIGH][MOC] Write 16-bit words from a head device (off by default).","write_action":true,"price_micros":0,"input_schema":null},{"name":"modbus_health_summary","description":"[READ] Classify Modbus registers against warn/alarm thresholds.","write_action":false,"price_micros":0,"input_schema":null},{"name":"modbus_read_coils","description":"[READ] Read coils (FC01) — digital outputs, read-only here.","write_action":false,"price_micros":0,"input_schema":null},{"name":"modbus_read_discrete","description":"[READ] Read discrete inputs (FC02) — read-only digital inputs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"modbus_read_holding","description":"[READ] Read holding registers (FC03) with a decode hint.","write_action":false,"price_micros":0,"input_schema":null},{"name":"modbus_read_input","description":"[READ] Read input registers (FC04) with a decode hint.","write_action":false,"price_micros":0,"input_schema":null},{"name":"monitor_changes","description":"[READ][risk=low] Capture only the value CHANGES of a point over a bounded window.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mqtt_publish","description":"[WRITE][risk=HIGH][MOC] Publish/command to an MQTT topic (off by default).","write_action":true,"price_micros":0,"input_schema":null},{"name":"mqtt_read_topic","description":"[READ][risk=low] Plain MQTT: collect a BOUNDED set of messages from a topic.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mtconnect_assets","description":"[READ][risk=low] Assets the agent knows (cutting tools, fixtures, programs).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mtconnect_current","description":"[READ][risk=low] Latest value of every data item (a snapshot of the machine now).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mtconnect_oee_snapshot","description":"[READ][risk=low] Availability / Execution / mode / program (OEE inputs).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mtconnect_probe","description":"[READ][risk=low] The device model: devices → components → data items.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mtconnect_sample","description":"[READ][risk=low] A BOUNDED stream of recent observations (history).","write_action":false,"price_micros":0,"input_schema":null},{"name":"oee_compute","description":"[READ][risk=low] OEE = Availability × Performance × Quality from inputs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"oee_multidim","description":"[READ][risk=low] Aggregate OEE across dimensions (machine × part × shift).","write_action":false,"price_micros":0,"input_schema":null},{"name":"opcua_browse","description":"[READ] Browse the OPC-UA node tree from a node id (bounded depth).","write_action":false,"price_micros":0,"input_schema":null},{"name":"opcua_read_alarms","description":"[READ] Best-effort surfacing of active alarm/condition booleans.","write_action":false,"price_micros":0,"input_schema":null},{"name":"opcua_read_history","description":"[READ] OPC-UA Historical Access (HDA): raw historical values over a window.","write_action":false,"price_micros":0,"input_schema":null},{"name":"opcua_read_many","description":"[READ] Batch-read multiple node ids in one session (bounded count).","write_action":false,"price_micros":0,"input_schema":null},{"name":"opcua_read_node","description":"[READ] Read one node: value, datatype, source timestamp, status code.","write_action":false,"price_micros":0,"input_schema":null},{"name":"opcua_server_info","description":"[READ] OPC-UA server status, build info, and namespace array.","write_action":false,"price_micros":0,"input_schema":null},{"name":"opcua_subscribe_sample","description":"[READ] Sample a node a BOUNDED number of times, then return (never loops).","write_action":false,"price_micros":0,"input_schema":null},{"name":"protocols_supported","description":"[READ][risk=low] Capability map — protocols, status, tools, connection params.","write_action":false,"price_micros":0,"input_schema":null},{"name":"s7_cpu_info","description":"[READ][risk=low] S7 CPU identity + run/stop status (proves the link).","write_action":false,"price_micros":0,"input_schema":null},{"name":"s7_read_area","description":"[READ][risk=low] Read ``count`` items of a type from an S7 memory area.","write_action":false,"price_micros":0,"input_schema":null},{"name":"s7_read_db","description":"[READ][risk=low] Read ``count`` ``dtype`` items from data block ``db``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"s7_read_many","description":"[READ][risk=low] Batch-read raw pyS7 address strings in one request.","write_action":false,"price_micros":0,"input_schema":null},{"name":"s7_write_db","description":"[WRITE][risk=HIGH][MOC] Write ONE value to an S7 data block (off by default).","write_action":true,"price_micros":0,"input_schema":null},{"name":"sparkplug_decode_payload","description":"[READ][risk=low] Decode a single raw Sparkplug B payload to structured metrics.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sparkplug_node_list","description":"[READ][risk=low] Discover edge nodes/devices + online state + primary-host STATE.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sparkplug_subscribe_sample","description":"[READ][risk=low] Bounded Sparkplug B sample with full decode + birth/death/seq.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tag_health","description":"[READ][risk=low] Rank tag offenders by bad-quality / flatline / range / anomaly.","write_action":false,"price_micros":0,"input_schema":null},{"name":"uns_browse","description":"[READ][risk=low] Browse the live topic tree (UNS) under a filter (bounded).","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-26T16:33:31.076Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T16:33:31.057Z","components":{"code":{"score":20,"max":25,"notes":["67 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 8 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"obf.hex-density","severity":"medium","component":"code","title":"Heavily hex-escaped string (obfuscation)","evidence":"ot_aiops-0.3.0/ot_aiops/sparkplug_b_pb2.py: …\\x80\\x80\\x80\\x80\\x02\\x42\\x07\\n\\x05value*\\x08\\x08\\x06\\x10\\x80\\x80\\x80\\x80\\x02\\x1a\\x97\\x04\\n\\x07\\x44\\x61taSet\\x12\\x16\\n\\x0enum_of_…"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"ot-aiops","version":"0.3.0","found":true,"weeklyDownloads":34,"license":"MIT","dependencyCount":15,"publishedAt":"2026-06-28T07:34:05.165332Z"}],"repo":{"found":true,"owner":"AIops-tools","repo":"OT-AIops","archived":false,"pushedAt":"2026-09-19T01:02:11Z","stars":2,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/297801892?v=4","ownerCreatedAt":"2026-06-22T02:46:57Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":2,"forks":0,"downloadsWeek":34,"license":"MIT","lastPushAt":"2026-09-19T01:02:11.000Z","score":27}}}},"grade_history":[],"reviews":[]}