Server definition
- Hash
- sha256:f4d5d59b7e6467dceb374adbd669c134f179c148408a870fadcce6554fd50de9
- What it is
- What a remote MCP server returned when asked what it offers: 2 tools
The blob, as servednamed by its sha256
{
"instructions": "Use caption_check when the user supplies one caption file (WebVTT .vtt, SRT .srt, or TTML/IMSC .ttml/.xml), attached natively in chat or as a public URL, and asks whether the file is valid, conformant, clean, or ready to deliver, or whether its reading speed passes a platform gate. Use caption_compare only when the user supplies exactly two caption files, attached or as public URLs, and asks how they differ, such as an original versus a translated track or before versus after a fix. Pass an attached file through the file parameter (files for caption_compare); never ask the user to host an attached file publicly. These tools fetch and parse the source file and judge structural conformance, timing, encoding, and CPS against a named profile; they do not judge translation quality, transcription accuracy, or synchronization against the actual video. The app detects format by content, so an arbitrary XML or text file that is not a caption track returns an explicit unsupported-format error. Calls fetch and parse a live file and can take up to 60 seconds on a full-length track; tell the user before the call. Lead with the file-check pass/fail result and the named profile, detected format and encoding, and the most severe evidenced issue (for example an overlapping cue or a CPS breach), then summarize spec errors, timing findings, line length, the named reading-speed profile used, and truncation. Distinguish specification errors from readability thresholds: under an advisory profile, a failed readability threshold is not a specification violation or a platform rejection. Never repeat any query string from the file URL in narration.",
"tools": [
{
"description": "Preflight one caption or subtitle file before delivery. Attach a WebVTT (.vtt), SRT (.srt), or TTML/IMSC (.ttml/.xml) caption file in chat or give a publicly fetchable URL and it downloads the artifact under an SSRF-guarded, 2 MB-capped fetch, detects the format by content and the byte encoding and BOM, then parses it with the real spec engine (the WebVTT spec parser, a dedicated SRT parser, or the imscJS TTML/IMSC profile engine) and returns deterministic evidence: pass/fail, cue count, structural spec and IMSC profile-conformance errors, overlapping / negative / out-of-order / empty cues, per-line length, and per-cue and summary reading speed (CPS) against a named platform profile (netflix-adult-20, netflix-children-17, youtube, ebu-tt). It reports only source-file conformance, timing, encoding, and reading-speed facts against a dated profile. It does not judge translation quality, transcription accuracy, or synchronization against the video. An arbitrary XML or text file that is not a caption track returns an explicit unsupported-format error. Fetching and parsing a full-length track can take up to 60 seconds. WebVTT limitation: the parser drops payload-less cues; cue counts, indices, timing checks and comparisons cover retained cues only, not those omitted cues.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"file": {
"additionalProperties": false,
"description": "A caption file attached in chat (WebVTT, SRT, or TTML/IMSC), detected by content not extension. Provide either this or url, never both.",
"properties": {
"download_url": {
"description": "Temporary authorized download URL supplied by ChatGPT; fetch it only while handling this tool call",
"type": "string"
},
"file_id": {
"description": "ChatGPT file id for the attached file",
"type": "string"
},
"file_name": {
"description": "Original file name when ChatGPT knows it",
"type": "string"
},
"mime_type": {
"description": "MIME type when ChatGPT knows it",
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"type": "object"
},
"profile": {
"anyOf": [
{
"const": "netflix-adult-20",
"description": "Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics.",
"type": "string"
},
{
"const": "netflix-children-17",
"description": "Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics.",
"type": "string"
},
{
"const": "youtube",
"description": "Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics.",
"type": "string"
},
{
"const": "ebu-tt",
"description": "Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics.",
"type": "string"
}
],
"description": "Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics."
},
"url": {
"description": "A publicly fetchable HTTP(S) URL of a WebVTT, SRT, or TTML/IMSC caption file, detected by content not extension. Provide either this or an attached file, never both. Query strings are allowed but never logged. Pasted caption bodies, data URLs, FTP/SFTP, and URLs needing credentials, headers, or cookies are not supported.\n\nSTRICT RULE: Caption check failed — provide either a caption URL or an attached caption file, not both\nSTRICT RULE: Caption check failed — provide a public caption URL or attach the caption file",
"maxLength": 2048,
"minLength": 1,
"pattern": "^https?://",
"type": "string"
}
},
"type": "object"
},
"name": "caption_check",
"outputSchema": {
"additionalProperties": false,
"properties": {
"bom": {
"description": "Byte-order-mark detected: utf-8, utf-16le, utf-16be, or none",
"type": "string"
},
"checkedAt": {
"description": "ISO timestamp when the caption result was produced",
"type": "string"
},
"cps": {
"additionalProperties": false,
"description": "Per-cue and summary reading-speed measurements",
"properties": {
"advisory": {
"description": "Whether the profile reading-speed limit is advisory",
"type": "boolean"
},
"breaches": {
"description": "Cues whose reading speed exceeds the profile limit",
"items": {
"additionalProperties": false,
"properties": {
"cps": {
"description": "Measured reading speed for the cue in characters per second",
"type": "number"
},
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
}
},
"required": [
"cue",
"cps"
],
"type": "object"
},
"type": "array"
},
"limit": {
"description": "Profile maximum characters per second",
"type": "number"
},
"max": {
"description": "Highest per-cue characters-per-second",
"type": "number"
},
"mean": {
"description": "Mean characters per second across measured nonempty cues with positive duration",
"type": "number"
},
"measured": {
"description": "At least one cue had positive duration and text, distinguished from not-measured",
"type": "boolean"
},
"profileId": {
"description": "Identifier of the profile supplying the reading-speed limit",
"type": "string"
}
},
"required": [
"profileId",
"limit",
"advisory",
"measured",
"max",
"mean",
"breaches"
],
"type": "object"
},
"cueCount": {
"description": "Number of caption cues retained for checking; payload-less WebVTT cues are omitted by the parser",
"type": "number"
},
"detectedFormat": {
"description": "webvtt, srt, or ttml (covers IMSC), detected by content",
"type": "string"
},
"encoding": {
"description": "Detected byte encoding of the caption file",
"type": "string"
},
"lineLength": {
"additionalProperties": false,
"description": "Per-line character counts checked against the profile limit",
"properties": {
"limit": {
"description": "Profile maximum characters per line",
"type": "number"
},
"maxObserved": {
"description": "Largest character count observed on a caption line",
"type": "number"
},
"overLimit": {
"description": "Caption lines exceeding the profile character limit",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
},
"length": {
"description": "Number of Unicode characters on the affected line",
"type": "number"
},
"line": {
"description": "One-based line number within the cue",
"type": "number"
}
},
"required": [
"cue",
"line",
"length"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"limit",
"maxObserved",
"overLimit"
],
"type": "object"
},
"pass": {
"description": "True when the file passes all checked format, timing, line-length and reading-speed criteria for the selected profile. False can include an advisory readability threshold breach, not just a specification error; this is not a platform-acceptance verdict",
"type": "boolean"
},
"profile": {
"additionalProperties": false,
"description": "Reading-speed and line-length profile applied to the caption checks",
"properties": {
"advisory": {
"description": "The reading-speed limit is an industry heuristic, not a spec-mandated number",
"type": "boolean"
},
"date": {
"description": "Review month recorded for the profile",
"type": "string"
},
"id": {
"description": "Identifier of the applied caption profile",
"type": "string"
},
"label": {
"description": "Display name of the applied caption profile",
"type": "string"
},
"maxCps": {
"description": "Maximum characters per second specified by the profile",
"type": "number"
},
"maxLineLength": {
"description": "Maximum characters per line specified by the profile",
"type": "number"
},
"source": {
"description": "Source or advisory basis recorded for the profile",
"type": "string"
}
},
"required": [
"id",
"date",
"label",
"maxCps",
"maxLineLength",
"advisory",
"source"
],
"type": "object"
},
"rawCueCount": {
"description": "Cues parsed before the 20,000-cue cap; excludes payload-less WebVTT cues dropped by the parser",
"type": "number"
},
"specUsed": {
"description": "The dated spec identifier the detected format was checked against",
"type": "string"
},
"structuralErrorCounts": {
"additionalProperties": false,
"description": "Counts of structural findings grouped by severity",
"properties": {
"error": {
"description": "Number of error-severity structural findings",
"type": "number"
},
"warning": {
"description": "Number of warning-severity structural findings",
"type": "number"
}
},
"required": [
"error",
"warning"
],
"type": "object"
},
"structuralErrors": {
"description": "Spec-parser and IMSC/TTML profile-conformance findings",
"items": {
"additionalProperties": false,
"properties": {
"code": {
"description": "Machine-readable structural finding code",
"type": "string"
},
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
},
"message": {
"description": "Parser diagnostic describing the structural finding",
"type": "string"
},
"severity": {
"description": "Severity assigned by the caption parser",
"type": "string"
}
},
"required": [
"severity",
"code",
"message"
],
"type": "object"
},
"type": "array"
},
"timing": {
"additionalProperties": false,
"description": "Measured retained-cue timing and empty-text findings; WebVTT indices refer to retained cues, not original source positions",
"properties": {
"checked": {
"description": "Cue timing could be analysed (at least one cue)",
"type": "boolean"
},
"clean": {
"description": "Checked and no overlapping, negative, out-of-order, or empty retained cue found, distinguished from not-checked; omitted payload-less WebVTT cues are not assessed",
"type": "boolean"
},
"empty": {
"description": "Cues whose text is empty after trimming whitespace",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
}
},
"required": [
"cue"
],
"type": "object"
},
"type": "array"
},
"negative": {
"description": "Cues whose end time is at or before their start time",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
},
"durationMs": {
"description": "Cue end time minus start time in milliseconds",
"type": "number"
}
},
"required": [
"cue",
"durationMs"
],
"type": "object"
},
"type": "array"
},
"outOfOrder": {
"description": "Cues that start before the preceding cue starts",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
}
},
"required": [
"cue"
],
"type": "object"
},
"type": "array"
},
"overlapping": {
"description": "Cues that start before the preceding cue ends",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
},
"previousCue": {
"description": "Index of the preceding overlapping cue",
"type": "number"
}
},
"required": [
"cue",
"previousCue"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"checked",
"clean",
"overlapping",
"negative",
"outOfOrder",
"empty"
],
"type": "object"
},
"truncation": {
"description": "Markers identifying checks truncated by configured limits",
"items": {
"description": "Machine-checkable truncation markers, e.g. cue-cap",
"type": "string"
},
"type": "array"
},
"ttmlProfile": {
"description": "IMSC/TTML profile designator declared in the file, when present",
"type": "string"
},
"url": {
"description": "The checked caption source: the submitted URL query- and fragment-stripped, or the attached file's name",
"type": "string"
}
},
"required": [
"url",
"checkedAt",
"detectedFormat",
"encoding",
"bom",
"pass",
"cueCount",
"rawCueCount",
"profile",
"timing",
"lineLength",
"cps",
"structuralErrors",
"structuralErrorCounts",
"specUsed",
"truncation"
],
"type": "object"
}
},
{
"description": "Compare exactly two caption or subtitle files under identical bounded checks: an original versus its translated track, before versus after a timing fix, or a format migration. Attach two WebVTT, SRT, or TTML/IMSC caption files in chat or give two publicly fetchable URLs and it runs the same SSRF-guarded, 2 MB-capped preflight as caption_check on each, then aligns them by cue index and reports side-by-side pass status, detected-format and encoding differences, the cue-count delta, timing drift and overlap differences, reading-speed (CPS) regressions, structural-error deltas, and a winner only when the measured checks separate the two. Use caption_check for a single file. It reports only source-file conformance, timing, encoding, and reading-speed facts against a dated profile: never translation quality, transcription accuracy, or sync against the video. Fetching and parsing two live files can take up to 60 seconds. WebVTT limitation: the parser drops payload-less cues; cue counts, indices, timing checks and comparisons cover retained cues only, not those omitted cues.",
"inputSchema": {
"additionalProperties": false,
"description": "STRICT RULE: Caption compare failed — the two caption files are the same; provide two distinct caption files.",
"properties": {
"files": {
"description": "Exactly two caption files attached in chat to compare, in the order they should appear side by side (for example original then translated). Provide either this or urls, never both.",
"items": {
"additionalProperties": false,
"description": "A caption file attached in chat (WebVTT, SRT, or TTML/IMSC), detected by content.",
"properties": {
"download_url": {
"description": "Temporary authorized download URL supplied by ChatGPT; fetch it only while handling this tool call",
"type": "string"
},
"file_id": {
"description": "ChatGPT file id for the attached file",
"type": "string"
},
"file_name": {
"description": "Original file name when ChatGPT knows it",
"type": "string"
},
"mime_type": {
"description": "MIME type when ChatGPT knows it",
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"type": "object"
},
"maxItems": 2,
"minItems": 2,
"type": "array"
},
"profile": {
"anyOf": [
{
"const": "netflix-adult-20",
"description": "Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt.",
"type": "string"
},
{
"const": "netflix-children-17",
"description": "Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt.",
"type": "string"
},
{
"const": "youtube",
"description": "Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt.",
"type": "string"
},
{
"const": "ebu-tt",
"description": "Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt.",
"type": "string"
}
],
"description": "Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt."
},
"urls": {
"description": "Exactly two public caption URLs to compare, in the order they should appear side by side (for example original then translated). Provide either this or files, never both.\n\nSTRICT RULE: Caption compare failed — provide either two caption URLs or two attached caption files, not both\nSTRICT RULE: Caption compare failed — provide two public caption URLs or attach two caption files",
"items": {
"description": "A publicly fetchable HTTP(S) WebVTT, SRT, or TTML/IMSC caption URL, detected by content.",
"maxLength": 2048,
"minLength": 1,
"pattern": "^https?://",
"type": "string"
},
"maxItems": 2,
"minItems": 2,
"type": "array"
}
},
"type": "object"
},
"name": "caption_compare",
"outputSchema": {
"additionalProperties": false,
"properties": {
"checkedAt": {
"description": "ISO timestamp when the caption result was produced",
"type": "string"
},
"comparison": {
"additionalProperties": false,
"description": "Measured differences between the two successfully preflighted tracks",
"properties": {
"cpsRegression": {
"additionalProperties": false,
"description": "Change in maximum reading speed from the first track to the second",
"properties": {
"delta": {
"description": "Second track max CPS minus first: positive means the second reads faster",
"type": "number"
},
"firstMax": {
"description": "Maximum reading speed of the first track in characters per second",
"type": "number"
},
"secondMax": {
"description": "Maximum reading speed of the second track in characters per second",
"type": "number"
}
},
"required": [
"firstMax",
"secondMax",
"delta"
],
"type": "object"
},
"cueCountDelta": {
"description": "Second track cue count minus first",
"type": "number"
},
"encodingDiffers": {
"description": "Whether the detected byte encodings differ",
"type": "boolean"
},
"formatDiffers": {
"description": "Whether the detected caption formats differ",
"type": "boolean"
},
"overlapDelta": {
"description": "Second track overlapping-cue count minus first",
"type": "number"
},
"passDiffers": {
"description": "Whether the two caption pass results differ",
"type": "boolean"
},
"structuralErrorDelta": {
"additionalProperties": false,
"description": "Second-track structural finding counts minus first-track counts",
"properties": {
"error": {
"description": "Second-track structural error count minus first-track count",
"type": "number"
},
"warning": {
"description": "Second-track structural warning count minus first-track count",
"type": "number"
}
},
"required": [
"error",
"warning"
],
"type": "object"
},
"timingDrift": {
"additionalProperties": false,
"description": "Absolute cue-start drift across positions aligned by cue index",
"properties": {
"alignedCues": {
"description": "Cue positions compared by index, min of the two counts",
"type": "number"
},
"driftingCues": {
"description": "Aligned positions whose start times differ by more than 500 ms",
"type": "number"
},
"maxStartDriftMs": {
"description": "Largest absolute cue-start drift in milliseconds",
"type": "number"
},
"meanStartDriftMs": {
"description": "Mean absolute cue-start drift in milliseconds",
"type": "number"
}
},
"required": [
"alignedCues",
"maxStartDriftMs",
"meanStartDriftMs",
"driftingCues"
],
"type": "object"
}
},
"required": [
"cueCountDelta",
"formatDiffers",
"encodingDiffers",
"passDiffers",
"timingDrift",
"overlapDelta",
"cpsRegression",
"structuralErrorDelta"
],
"type": "object"
},
"notes": {
"description": "Notes about incomplete checks or completion under identical limits",
"items": {
"type": "string"
},
"type": "array"
},
"profile": {
"additionalProperties": false,
"description": "Reading-speed and line-length profile applied to the caption checks",
"properties": {
"advisory": {
"description": "The reading-speed limit is an industry heuristic, not a spec-mandated number",
"type": "boolean"
},
"date": {
"description": "Review month recorded for the profile",
"type": "string"
},
"id": {
"description": "Identifier of the applied caption profile",
"type": "string"
},
"label": {
"description": "Display name of the applied caption profile",
"type": "string"
},
"maxCps": {
"description": "Maximum characters per second specified by the profile",
"type": "number"
},
"maxLineLength": {
"description": "Maximum characters per line specified by the profile",
"type": "number"
},
"source": {
"description": "Source or advisory basis recorded for the profile",
"type": "string"
}
},
"required": [
"id",
"date",
"label",
"maxCps",
"maxLineLength",
"advisory",
"source"
],
"type": "object"
},
"tracks": {
"description": "The two tracks in input order",
"items": {
"additionalProperties": false,
"properties": {
"bom": {
"description": "Detected byte-order mark, or none",
"type": "string"
},
"cps": {
"additionalProperties": false,
"description": "Per-cue and summary reading-speed measurements",
"properties": {
"advisory": {
"description": "Whether the profile reading-speed limit is advisory",
"type": "boolean"
},
"breaches": {
"description": "Cues whose reading speed exceeds the profile limit",
"items": {
"additionalProperties": false,
"properties": {
"cps": {
"description": "Measured reading speed for the cue in characters per second",
"type": "number"
},
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
}
},
"required": [
"cue",
"cps"
],
"type": "object"
},
"type": "array"
},
"limit": {
"description": "Profile maximum characters per second",
"type": "number"
},
"max": {
"description": "Highest per-cue characters-per-second",
"type": "number"
},
"mean": {
"description": "Mean characters per second across measured nonempty cues with positive duration",
"type": "number"
},
"measured": {
"description": "At least one cue had positive duration and text, distinguished from not-measured",
"type": "boolean"
},
"profileId": {
"description": "Identifier of the profile supplying the reading-speed limit",
"type": "string"
}
},
"required": [
"profileId",
"limit",
"advisory",
"measured",
"max",
"mean",
"breaches"
],
"type": "object"
},
"cueCount": {
"description": "Number of caption cues retained for checking",
"type": "number"
},
"detectedFormat": {
"description": "Caption format detected from file content",
"type": "string"
},
"encoding": {
"description": "Detected byte encoding of the caption file",
"type": "string"
},
"failed": {
"description": "Reason the caption file could not be preflighted",
"type": "string"
},
"lineLength": {
"additionalProperties": false,
"description": "Per-line character counts checked against the profile limit",
"properties": {
"limit": {
"description": "Profile maximum characters per line",
"type": "number"
},
"maxObserved": {
"description": "Largest character count observed on a caption line",
"type": "number"
},
"overLimit": {
"description": "Caption lines exceeding the profile character limit",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
},
"length": {
"description": "Number of Unicode characters on the affected line",
"type": "number"
},
"line": {
"description": "One-based line number within the cue",
"type": "number"
}
},
"required": [
"cue",
"line",
"length"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"limit",
"maxObserved",
"overLimit"
],
"type": "object"
},
"ok": {
"description": "Whether the caption file could be fetched and preflighted",
"type": "boolean"
},
"pass": {
"description": "Whether the track passes structural, timing, line-length, and reading-speed checks",
"type": "boolean"
},
"structuralErrorCounts": {
"additionalProperties": false,
"description": "Counts of structural findings grouped by severity",
"properties": {
"error": {
"description": "Number of error-severity structural findings",
"type": "number"
},
"warning": {
"description": "Number of warning-severity structural findings",
"type": "number"
}
},
"required": [
"error",
"warning"
],
"type": "object"
},
"timing": {
"additionalProperties": false,
"description": "Measured cue timing and empty-text findings",
"properties": {
"checked": {
"description": "Cue timing could be analysed (at least one cue)",
"type": "boolean"
},
"clean": {
"description": "Checked and no overlapping, negative, out-of-order, or empty cue found, distinguished from not-checked",
"type": "boolean"
},
"empty": {
"description": "Cues whose text is empty after trimming whitespace",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
}
},
"required": [
"cue"
],
"type": "object"
},
"type": "array"
},
"negative": {
"description": "Cues whose end time is at or before their start time",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
},
"durationMs": {
"description": "Cue end time minus start time in milliseconds",
"type": "number"
}
},
"required": [
"cue",
"durationMs"
],
"type": "object"
},
"type": "array"
},
"outOfOrder": {
"description": "Cues that start before the preceding cue starts",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
}
},
"required": [
"cue"
],
"type": "object"
},
"type": "array"
},
"overlapping": {
"description": "Cues that start before the preceding cue ends",
"items": {
"additionalProperties": false,
"properties": {
"cue": {
"description": "Index of the affected caption cue",
"type": "number"
},
"previousCue": {
"description": "Index of the preceding overlapping cue",
"type": "number"
}
},
"required": [
"cue",
"previousCue"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"checked",
"clean",
"overlapping",
"negative",
"outOfOrder",
"empty"
],
"type": "object"
},
"url": {
"description": "The checked caption source: the submitted URL query- and fragment-stripped, or the attached file's name",
"type": "string"
}
},
"required": [
"url",
"ok"
],
"type": "object"
},
"type": "array"
},
"winner": {
"additionalProperties": false,
"description": "Track with fewer weighted structural, timing, reading-speed, and line-length problems",
"properties": {
"reason": {
"description": "Measured findings supporting the fewer-problems track",
"type": "string"
},
"url": {
"description": "Reported source identifier of the track with fewer measured problems",
"type": "string"
}
},
"required": [
"url",
"reason"
],
"type": "object"
}
},
"required": [
"checkedAt",
"profile",
"tracks",
"notes"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:f4d5d59b7e6467dceb374adbd669c134f179c148408a870fadcce6554fd50de9 | sha256sum