Skip to content

cora-mcp-summary

summarize_fixes’ result: what became of each issue whose remediation loop is open, every issue a scan found whether or not a fix was tried, for a person to review. Each issue gives its rule and where to read about it, its page and element, what became of it, the fixer’s account of it and the test that pins its fix, and the element’s accessibility-tree entries before and after its last fix. The call ends the loop of each issue it lists.

Each version lists its fields, then a section for each object they hold, headed by its path, in which [] stands for each entry of a list. Where objects of several kinds share a path, each kind has a section, named by the field that tells them apart. A field marked required is in every object of its kind, and the description of any other says when it is absent.

The version this release writes. Its JSON Schema is schemas/cora-mcp-summary/v1.json in the @vispero/cora package and at https://cora.vispero.com/docs/0.10/schemas/cora-mcp-summary/v1.json.

  • format (“cora-mcp-summary”, required): The result’s format, always cora-mcp-summary.
  • version (1, required): The version of cora-mcp’s tool surface, which every result and error of its tools declares.
  • issues (array of objects, required): The issues awaiting a person first, escalated then proposed, then those fixed; within each, most severe first, an issue whose scan’s run file cannot be read last. They are listed in that order while the result has room.
  • omitted (integer, required): How many issues the result leaves out, for its size or because a verification of them is running. Each keeps its loop, so a later call reports it.
  • id (string, required): The issue’s ID when its loop started, as 32 lowercase hexadecimal characters.
  • listedAs (array of strings, required): Each other ID a rescan has listed the issue under since its loop started, oldest first, kept in order while the list has room.
  • rule (object, required): The issue’s rule, with where to read about it.
  • page (object, required): The page the issue’s loop followed its element on.
  • element (string, required): The element the loop followed, by its path: each iframe or shadow host it is inside, outermost first, as frame: or shadow: and its CSS selector, then the element’s own selector, joined by >> with a space on each side, such as frame:#checkout >> button.pay. Cut short, ending with …, when it is long.
  • found (object): The issue as the scan its loop started from found it; absent when that scan’s run file cannot be read, as when it was deleted, or holds none of the issue’s IDs.
  • disposition (“fixed”, “proposed” or “escalated”, required): What became of the issue: fixed when verify_fix last found it fixed, escalated when its loop escalated it to a person after the attempts it allows did not fix it, and otherwise proposed, for a person to review the fix the fixer proposes or to make the one that needs their judgement, whether or not a fix was tried.
  • report (true): true when cora scan’s report of the scan its loop started from lists the issue as report-only: its violations are of rules the project’s rule selection set to report on their page, beside any in a page state an agent reached, so its findings are shown but never fail CI’s gate and are never baselined. Absent otherwise, as on an issue that needs review, or when that scan’s run file cannot be read.
  • accepted (true): true when the latest scan that compared the issue with the project’s baseline found that the baseline accepts it, as cora scan counts it, so CI’s gate does not fail on it: a scan of its page as it loads, or a verification’s rescan of one. Absent otherwise, as before any such scan. The issue’s loop keeps it, so a run file that cannot be read leaves it as it is.
  • change (string): The fixer’s account of the issue, as the call’s fixes gave it, for a person to review, cut short, ending with …, when it is long; absent when no entry of fixes named the issue.
  • test (string): The test that pins the fix, by its file and name, as the call’s fixes named it, cut short, ending with …, when it is long; absent when the issue’s entry named none.
  • before (object, required): The element’s entry in the browser’s accessibility tree when the issue’s loop started, or why it has none. Its texts from the page are cut short, ending with …, when they are long, and its states, or an excluded entry’s reasons, are kept in order while the list has room, each cut short too.
  • after (object): The element’s entry in the rescan of the issue’s last attempt, or why it has none, cut as before is; absent before any attempt, and when that attempt kept no entry.
  • id (string, required): The rule’s ID, such as axe/image-alt.
  • title (string): The rule in plain language, from its fix guidance, such as “Buttons need a name”; absent for a rule CORA has no guidance for.
  • affects (array of “screen-reader”, “low-vision”, “color-vision”, “deaf”, “keyboard”, “voice-control”, “dexterity”, “cognitive” or “motion”): Who the rule’s failures affect, most affected first, from its fix guidance, such as screen-reader or keyboard; absent for a rule CORA has no guidance for.
  • wcag (array of strings, required): The WCAG success criteria the rule checks, such as 1.1.1, kept in order while the list has room; empty for a best practice, and for a rule this cora knows only by its ID.
  • bestPractice (boolean, required): Whether the rule is a best practice: one known to name no WCAG success criterion, whose failures are not WCAG failures. false for a rule this cora knows only by its ID.
  • understanding (array of objects, required): The page in the W3C’s Understanding WCAG 2.2 of each of wcag’s criteria that has one, in wcag’s order, kept in order while the list has room.
  • helpUrl (string): The address of the rule’s documentation from its engine, such as Deque University’s page for an axe-core rule; absent for a rule this cora does not know.
  • guidanceUrl (string): The address of the rule’s guidance page in the docs of the cora-mcp release that answered; absent for a rule CORA has no guidance for.
  • criterion (string, required): The WCAG success criterion, such as 1.4.3.
  • url (string, required): The address of the criterion’s page in Understanding WCAG 2.2, such as https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html.
  • url (string, required): The page’s URL, as the scan that started the issue’s loop recorded it, with its credentials redacted as a results file stores a URL, cut short, ending with …, when it is long.
  • reachedBy (“navigation” or “interaction”, required): How the page state was reached: navigation for a page scan_url loaded, and interaction for a page scan_page scanned as the agent left it.
  • browser (string, required): The name of the browser the page ran in, such as chrome. An open set: a cora that does not know a name, such as one a newer cora writes, keeps and compares it as it is.
  • viewport (object, required): The size of the browser’s viewport the page was shown at.
  • width (integer, required): Its width, in CSS pixels.
  • height (integer, required): Its height, in CSS pixels.
  • run (string, required): The ID of that scan’s run, which explain_finding takes: its start time and eight random characters, such as 20261005T221403123Z-k3j9x2ab.
  • severity (“critical”, “serious”, “moderate” or “minor”, required): How much the issue hinders people in that scan: its most severe violation’s severity, or its most severe finding’s when it has no violation.
  • sources (array of objects, required): Each distinct place in the project’s source the issue’s findings are at, in the issue’s order, its representative’s first, with each opening tag cut short, ending with …, when it is long. They are kept in order while the list has room, and a place too long for the list on its own is left out; empty when no finding has a source location.
  • omittedSources (integer, required): How many places sources leaves out for its size.
  • callSites (integer, required): How many distinct call-site source locations the issue’s findings are at in that scan, each place counted once: the host elements in the project’s source around the uses of a component that renders the element, which a fix at the call site must reach. Zero when none of its findings has one.
  • file (string, required): The file, from the repository’s root, with forward slashes, such as src/App.tsx.
  • line (integer, required): The line the opening tag’s < is on, from 1.
  • column (integer, required): The column of the opening tag’s <, from 1, counting UTF-16 code units, as ESLint and SARIF do: a tab is one column, and an emoji two.
  • endLine (integer): The line the opening tag’s closing > is on, which may be line; absent when the location does not give its end.
  • endColumn (integer): The column just after the opening tag’s closing >, counted as column is; absent when the location does not give its end.
  • openingTag (string, required): The opening tag as the source fingerprint hashes it: its source text from < to >, each run of whitespace written as one space.
  • resolution (“element” or “call-site”, required): Whose opening tag the location is: element for the element’s own, when it has a source stamp of its own; call-site for its nearest stamped ancestor’s when it has none, such as an element a component from node_modules renders: the closest host element in the project’s source that encloses it.

issues[].before where status is “missing”

Section titled “issues[].before where status is “missing””

Also at: issues[].after

  • status (“missing”, required): What became of the element’s entry: missing when its reference leads to no single element, excluded when the browser leaves the element out of the tree, included when the tree holds it, and unavailable when the entry could not be read.

issues[].before where status is “excluded”

Section titled “issues[].before where status is “excluded””

Also at: issues[].after

  • status (“excluded”, required): What became of the element’s entry: missing when its reference leads to no single element, excluded when the browser leaves the element out of the tree, included when the tree holds it, and unavailable when the entry could not be read.
  • reasons (array of strings, required): The browser’s names for why it leaves the element out, at least one, such as notRendered or ariaHiddenElement. An open set, which differs between browser versions.

issues[].before where status is “included”

Section titled “issues[].before where status is “included””

Also at: issues[].after

  • status (“included”, required): What became of the element’s entry: missing when its reference leads to no single element, excluded when the browser leaves the element out of the tree, included when the tree holds it, and unavailable when the entry could not be read.
  • role (string, required): The element’s role in the tree, such as button.
  • name (string, required): The accessible name; empty when the element has none.
  • description (string): The accessible description; absent when the element has none.
  • states (object of string, number or boolean, required): Each asserted property’s value by its name, such as focusable: true; a property that is not asserted has no key. A tristate, such as checked or pressed, is true, false or mixed as a string, and a number stays a number.

issues[].before where status is “unavailable”

Section titled “issues[].before where status is “unavailable””

Also at: issues[].after

  • status (“unavailable”, required): What became of the element’s entry: missing when its reference leads to no single element, excluded when the browser leaves the element out of the tree, included when the tree holds it, and unavailable when the entry could not be read.
  • reason (“facet-absent”, “failed” or “timed-out”, required): Why the entry could not be read: facet-absent when the browser cannot give one, as only Chromium gives accessibility entries; failed when reading it failed on this element; and timed-out when the capture’s time ran out first.