addrbookFor publishers
← The evidence ledger

Evidence row 309589

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint a426069d-c2c8-432f-b3c9-6c6bad15b5d4
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
395ab7e829fc3c8a4bff1e1afe3e6457f7b47fb7c7cea763156bf4bbbf36bbae
Leaf
0x5362fb2a3948934fbef11963297ddaa35d4c9295a5fd1b01b3944cbb83bfb811

What was observed

{
  "count": 8,
  "tools": [
    {
      "description": "Audit subtitle readability and produce a report: reading speed (CPS), cue durations that are too short or too long, lines that are too wide, more than two lines, and overlapping cues. Returns a formatted report listing every flagged cue.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "The full subtitle file text.",
            "type": "string"
          },
          "max_cps": {
            "description": "Max characters per second. Default 20.",
            "type": "number"
          },
          "max_duration_seconds": {
            "description": "Maximum cue duration in seconds. Default 7.",
            "type": "number"
          },
          "max_line_length": {
            "description": "Max characters per line. Default 42.",
            "type": "number"
          },
          "min_duration_seconds": {
            "description": "Minimum cue duration in seconds. Default 0.833 (Netflix 5/6s).",
            "type": "number"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "check_subtitle_timing"
    },
    {
      "description": "Strip noise from auto-generated subtitles: HTML/WebVTT tags, ASS override codes, music and sound-effect cues, speaker labels, empty cues and duplicate lines. Returns the subtitle file in SRT or WebVTT.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "The full subtitle file text.",
            "type": "string"
          },
          "drop_duplicates": {
            "description": "Drop cues whose text was already seen. Default false.",
            "type": "boolean"
          },
          "drop_empty": {
            "description": "Drop cues that become empty after cleaning. Default true.",
            "type": "boolean"
          },
          "remove_sound_cues": {
            "description": "Strip [Music], [Applause], ♪ ... ♪ and similar. Default true.",
            "type": "boolean"
          },
          "remove_speaker_labels": {
            "description": "Strip leading \"SPEAKER:\" prefixes. Default false — enable only if you want them gone.",
            "type": "boolean"
          },
          "remove_tags": {
            "description": "Strip HTML/WebVTT tags and ASS override codes. Default true.",
            "type": "boolean"
          },
          "to": {
            "description": "Output format. Default: same as the input.",
            "enum": [
              "srt",
              "vtt"
            ],
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "clean_subtitles"
    },
    {
      "description": "Convert subtitle text between formats. Reads SRT, WebVTT, ASS/SSA, YouTube SBV and TTML/DFXP; writes SRT, WebVTT, ASS, CSV or plain text. Format is auto-detected unless `from` is given.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "The full subtitle file text.",
            "type": "string"
          },
          "dedupe": {
            "description": "Only for to=\"text\": collapse consecutive identical lines (rolling-caption transcripts repeat lines). Default false.",
            "type": "boolean"
          },
          "from": {
            "description": "Source format (default \"auto\" = detect).",
            "enum": [
              "auto",
              "srt",
              "vtt",
              "ass",
              "sbv",
              "ttml"
            ],
            "type": "string"
          },
          "to": {
            "description": "Target format. `text` = plain transcript, one line per cue, no timecodes.",
            "enum": [
              "srt",
              "vtt",
              "ass",
              "csv",
              "text"
            ],
            "type": "string"
          }
        },
        "required": [
          "content",
          "to"
        ],
        "type": "object"
      },
      "name": "convert_subtitle"
    },
    {
      "description": "Repair mojibake — text where UTF-8 bytes were decoded as a single-byte encoding (cp1252/Latin-1 or cp1251). Symptoms: \"é\", \"’\", \"привет\". Returns the repaired text and how many passes were applied.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "The garbled subtitle text.",
            "type": "string"
          },
          "read_as": {
            "description": "Which encoding the file was wrongly read as. Default \"auto\" (tries cp1252 then cp1251).",
            "enum": [
              "auto",
              "cp1252",
              "cp1251"
            ],
            "type": "string"
          },
          "twice": {
            "description": "Set true when the text was mis-decoded twice (nested mojibake). Default false.",
            "type": "boolean"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "fix_subtitle_encoding"
    },
    {
      "description": "Append one subtitle track after another (CD1 + CD2, or a second language track). The second track is offset so it starts after the last cue of the first, plus an optional gap.",
      "inputSchema": {
        "properties": {
          "append_content": {
            "description": "The subtitle file text to append.",
            "type": "string"
          },
          "content": {
            "description": "The first subtitle file text.",
            "type": "string"
          },
          "gap_seconds": {
            "description": "Extra gap between the two tracks, in seconds. Default 0.",
            "type": "number"
          },
          "to": {
            "description": "Output format. Default: same as the input.",
            "enum": [
              "srt",
              "vtt"
            ],
            "type": "string"
          }
        },
        "required": [
          "content",
          "append_content"
        ],
        "type": "object"
      },
      "name": "merge_subtitles"
    },
    {
      "description": "Fix subtitle timing. Use offset_seconds for a uniform shift (whole track early/late). Use ratio, or from_fps/to_fps, for progressive drift caused by a frame-rate mismatch. Pass exactly one of the three.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "The full subtitle file text.",
            "type": "string"
          },
          "from_fps": {
            "description": "The frame rate the subtitles were authored for (used with to_fps).",
            "type": "number"
          },
          "offset_seconds": {
            "description": "Shift every cue by this many seconds. Negative = earlier. e.g. -2.5",
            "type": "number"
          },
          "ratio": {
            "description": "Scale all timings by this factor (new = old x ratio). e.g. 1.0427 for a 25→23.976 fps fix.",
            "type": "number"
          },
          "to_fps": {
            "description": "The frame rate of the actual video (used with from_fps).",
            "type": "number"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "retime_subtitles"
    },
    {
      "description": "Split one subtitle track into two parts at a given timecode, keeping original timecodes. Use the `at` argument plus `part` to fetch either half.",
      "inputSchema": {
        "properties": {
          "at": {
            "description": "Split point. Accepts \"45:00\", \"1:02:03\", \"90\" (seconds) or \"1:02:03.500\".",
            "type": "string"
          },
          "content": {
            "description": "The full subtitle file text.",
            "type": "string"
          },
          "part": {
            "description": "Which half to return. Default \"a\" (before the split point).",
            "enum": [
              "a",
              "b"
            ],
            "type": "string"
          },
          "to": {
            "description": "Output format. Default: same as the input.",
            "enum": [
              "srt",
              "vtt"
            ],
            "type": "string"
          }
        },
        "required": [
          "content",
          "at"
        ],
        "type": "object"
      },
      "name": "split_subtitles"
    },
    {
      "description": "Turn a plain transcript (one line per caption) into an SRT file with evenly spaced timecodes. Timing is a starting point, not a real transcription — say so when you present the result.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "Plain text, one caption per line. Blank lines are skipped.",
            "type": "string"
          },
          "duration_seconds": {
            "description": "Seconds each cue stays on screen. Default 2.5.",
            "type": "number"
          },
          "max_chars_per_cue": {
            "description": "Split longer lines into several cues at word boundaries. Default 0 = never split.",
            "type": "number"
          },
          "start_seconds": {
            "description": "Timecode of the first cue, in seconds. Default 0.",
            "type": "number"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "text_to_subtitles"
    }
  ]
}

What the leaf hashes

{"body":"395ab7e829fc3c8a4bff1e1afe3e6457f7b47fb7c7cea763156bf4bbbf36bbae","id":309589,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793058999758649,"prev":null,"subject":"a426069d-c2c8-432f-b3c9-6c6bad15b5d4","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x53626c5c79895708bc85b4bf0459743b9a7d2a55f5af49735e121e5aa56d2791
  2. 0xc1cc9353f9175c9e1f30096a1acd00e49e407a96e2b979a0f57d91915554a544
  3. 0xdc6fef4fb00fe55cf681176a23cc70a19b4630f1862360ace001fb695c3642e1
  4. 0x086bdea33f3fe6ffe26006ef8bf79ff41dd75bcad2af47ae6daace284f939cbc
  5. 0xd0ccb1577be70247da65b26c6321bff8c7dbc7144327152804be79e61ae0910d
  6. 0x21274a9988271dd6ffa0b809f2e0760aa34add4d9be1907e20420022633c7600
  7. 0xd114b69e2dc8e044c290ab6cb8e92bb5b932c8d0cbcce04e81339ba90004a045
  8. 0x420d206440564e613dd260a2dba5693112aabcfea78858302ff4191884bd60d4
  9. 0x175a5f6751c4851108026bd2210212cb5527a0d7ba55dcee44a8906a28ccc808
  10. 0xd9bbd72a69ca0e31e79dc40e77b469d8ab4afe2636f7905d8e4bb75b111f8a4b
  11. 0xa1d1c99aa28ad1dadb7dae5386ee0342e06cf642d29909897d3feca675a6d839
  12. 0x774d66905c34a786c6d34bf1c4491dbdb08f534c9eb5f76cf3de03385d28f388
  13. 0xd830c52e1e8095e014510110592485afcb02b9c9a36f85653e4891a8de941246
  14. 0x0733993143f0230e79482cef2c38e95d98f9eafbe64a43cdc74a4545938a4167
  15. 0x2be1e80e065dd6b2cc75a7142be22225acd144ac975d70bf24b4f01fd76dc497
  16. 0x2e6a32eb32761c210560e852405e2f865f958ddbe01027894f8b9c1b3433b9f0
  17. 0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON