Skip to main content
Glama

Compare Held Page Extracts

page_change

Compare two already-held extract-batch JSON artifacts. charged is false. Not a paid SKU. Does not fetch, pay, or schedule a second observation. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta. SYNTHETIC offline construction example only. No URL fetch, payment, receipt, observation or freshness is evidenced. Complete request example (title changes, description stays unchanged): {"before":{"ok":true,"product":"samedaydesk-extract-batch","schemaVersion":"samedaydesk.extract-batch.v0","quote":{"amountAtomic":"10000","displayUsdc":"0.01","meaning":"SYNTHETIC offline construction example only. No URL fetch, payment, receipt, observation or freshness is evidenced."},"jobId":"0000000000000000000000000000000000000000000000000000000000000000","jobStatus":"completed","stopReason":null,"partial":false,"sources":[{"id":"item-001","source":"https://synthetic.example.invalid/page","status":"success","data":{"title":"Synthetic title before","description":"Stable synthetic description"},"notes":[],"error":null,"provenance":{"transport":"synthetic","note":"SYNTHETIC offline construction example only. No URL fetch, payment, receipt, observation or freshness is evidenced."}}],"accounting":{"requests":0,"bytes":0,"wallMs":0,"retries":0,"succeeded":0,"partial":0,"failed":0,"unknown":0,"skippedDuplicate":0},"costInputs":{"note":"SYNTHETIC offline construction example only. No URL fetch, payment, receipt, observation or freshness is evidenced."},"charged":false,"boundary":{"guaranteedUrlSuccess":false,"introductoryPrice":true,"sourceFetchBeforeAuthorization":false,"automaticRetries":false}},"after":{"ok":true,"product":"samedaydesk-extract-batch","schemaVersion":"samedaydesk.extract-batch.v0","quote":{"amountAtomic":"10000","displayUsdc":"0.01","meaning":"SYNTHETIC offline construction example only. No URL fetch, payment, receipt, observation or freshness is evidenced."},"jobId":"1111111111111111111111111111111111111111111111111111111111111111","jobStatus":"completed","stopReason":null,"partial":false,"sources":[{"id":"item-001","source":"https://synthetic.example.invalid/page","status":"success","data":{"title":"Synthetic title after","description":"Stable synthetic description"},"notes":[],"error":null,"provenance":{"transport":"synthetic","note":"SYNTHETIC offline construction example only. No URL fetch, payment, receipt, observation or freshness is evidenced."}}],"accounting":{"requests":0,"bytes":0,"wallMs":0,"retries":0,"succeeded":0,"partial":0,"failed":0,"unknown":0,"skippedDuplicate":0},"costInputs":{"note":"SYNTHETIC offline construction example only. No URL fetch, payment, receipt, observation or freshness is evidenced."},"charged":false,"boundary":{"guaranteedUrlSuccess":false,"introductoryPrice":true,"sourceFetchBeforeAuthorization":false,"automaticRetries":false}},"fields":["title","description"]}

Input Schema

NameRequiredDescriptionDefault
afterYes
clockNoOptional caller UTC ISO-8601 timestamp with trailing Z, accepted for compatibility only; cannot attest freshness.
beforeYesAlready held JSON artifact or JSON envelope, never a path or URL to dereference. Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform. The structured branches describe representative comparable inputs. Incomplete objects remain admitted for diagnostic reports, subject to unchanged HTTP safety checks; HTTP 200 does not establish completeness or usefulness.
fieldsYesExplicit non-empty unique subset of supported fields. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.
maxStaleMsNoOptional freshness horizon, not a compute ceiling or freshness authority.
allowFreshClaimNoSupplied inputs cannot attest freshness. True is rejected.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / after / $ref
      Added value: +"#/properties/before"
    • removedInput schema / properties / after / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "description": "Representative merchant structure for useful comparisons; not a new paid request or proof of payment. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -    "properties": {
      -      "accounting": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "boundary": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "charged": {
      -        "type": "boolean"
      -      },
      -      "costInputs": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "error": {
      -        "type": "string"
      -      },
      -      "jobId": {
      -        "pattern": "^[a-f0-9]{64}$",
      -        "type": "string"
      -      },
      -      "jobStatus": {
      -        "enum": [
      -          "running",
      -          "completed",
      -          "completed_with_unknown",
      -          "stopped",
      -          "interrupted"
      -        ],
      -        "type": "string"
      -      },
      -      "ok": {
      -        "type": "boolean"
      -      },
      -      "partial": {
      -        "type": "boolean"
      -      },
      -      "product": {
      -        "const": "samedaydesk-extract-batch",
      -        "type": "string"
      -      },
      -      "quote": {
      -        "additionalProperties": true,
      -        "properties": {
      -          "amountAtomic": {
      -            "const": "10000",
      -            "type": "string"
      -          },
      -          "displayUsdc": {
      -            "const": "0.01",
      -            "type": "string"
      -          },
      -          "meaning": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "amountAtomic",
      -          "displayUsdc",
      -          "meaning"
      -        ],
      -        "type": "object"
      -      },
      -      "schemaVersion": {
      -        "const": "samedaydesk.extract-batch.v0",
      -        "type": "string"
      -      },
      -      "sources": {
      -        "items": {
      -          "additionalProperties": true,
      -          "properties": {
      -            "data": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                  "properties": {
      -                    "aiReadiness": {
      -                      "description": "Selected extraction value: aiReadiness."
      -                    },
      -                    "canonical": {
      -                      "description": "Selected extraction value: canonical."
      -                    },
      -                    "description": {
      -                      "description": "Selected extraction value: description."
      -                    },
      -                    "headings": {
      -                      "description": "Selected extraction value: headings."
      -                    },
      -                    "jsonLd": {
      -                      "description": "Selected extraction value: jsonLd."
      -                    },
      -                    "lang": {
      -                      "description": "Selected extraction value: lang."
      -                    },
      -                    "links": {
      -                      "description": "Selected extraction value: links."
      -                    },
      -                    "openGraph": {
      -                      "description": "Selected extraction value: openGraph."
      -                    },
      -                    "text": {
      -                      "description": "Selected extraction value: text."
      -                    },
      -                    "title": {
      -                      "description": "Selected extraction value: title."
      -                    },
      -                    "twitter": {
      -                      "description": "Selected extraction value: twitter."
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                {
      -                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                  "type": "null"
      -                }
      -              ],
      -              "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      -            },
      -            "error": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "properties": {},
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "finalUrl": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "httpStatus": {
      -              "anyOf": [
      -                {
      -                  "type": "integer"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "id": {
      -              "description": "Row identifier; does not replace source identity.",
      -              "type": "string"
      -            },
      -            "notes": {
      -              "type": "array"
      -            },
      -            "provenance": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "properties": {},
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "source": {
      -              "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      -              "minLength": 1,
      -              "pattern": "\\S",
      -              "type": "string"
      -            },
      -            "status": {
      -              "enum": [
      -                "pending",
      -                "success",
      -                "partial",
      -                "failure",
      -                "unknown",
      -                "skipped_duplicate"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "source",
      -            "status",
      -            "data",
      -            "notes",
      -            "error",
      -            "provenance"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 5,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "stopReason": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "ok",
      -      "product",
      -      "schemaVersion",
      -      "quote",
      -      "jobId",
      -      "jobStatus",
      -      "stopReason",
      -      "partial",
      -      "sources",
      -      "accounting",
      -      "costInputs",
      -      "charged",
      -      "boundary"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "description": "Existing C1 result compatibility. No merchant product/schemaVersion is required. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -    "properties": {
      -      "accounting": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "costParameters": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "items": {
      -        "items": {
      -          "additionalProperties": true,
      -          "properties": {
      -            "data": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                  "properties": {
      -                    "aiReadiness": {
      -                      "description": "Selected extraction value: aiReadiness."
      -                    },
      -                    "canonical": {
      -                      "description": "Selected extraction value: canonical."
      -                    },
      -                    "description": {
      -                      "description": "Selected extraction value: description."
      -                    },
      -                    "headings": {
      -                      "description": "Selected extraction value: headings."
      -                    },
      -                    "jsonLd": {
      -                      "description": "Selected extraction value: jsonLd."
      -                    },
      -                    "lang": {
      -                      "description": "Selected extraction value: lang."
      -                    },
      -                    "links": {
      -                      "description": "Selected extraction value: links."
      -                    },
      -                    "openGraph": {
      -                      "description": "Selected extraction value: openGraph."
      -                    },
      -                    "text": {
      -                      "description": "Selected extraction value: text."
      -                    },
      -                    "title": {
      -                      "description": "Selected extraction value: title."
      -                    },
      -                    "twitter": {
      -                      "description": "Selected extraction value: twitter."
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                {
      -                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                  "type": "null"
      -                }
      -              ],
      -              "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      -            },
      -            "error": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "properties": {},
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "finalUrl": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "httpStatus": {
      -              "anyOf": [
      -                {
      -                  "type": "integer"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "id": {
      -              "description": "Row identifier; does not replace source identity.",
      -              "type": "string"
      -            },
      -            "notes": {
      -              "type": "array"
      -            },
      -            "provenance": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "properties": {},
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "source": {
      -              "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      -              "minLength": 1,
      -              "pattern": "\\S",
      -              "type": "string"
      -            },
      -            "status": {
      -              "enum": [
      -                "pending",
      -                "success",
      -                "partial",
      -                "failure",
      -                "unknown",
      -                "skipped_duplicate"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "source",
      -            "status",
      -            "data",
      -            "notes",
      -            "error",
      -            "provenance"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 32,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "jobId": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "jobId",
      -      "status",
      -      "costParameters",
      -      "accounting",
      -      "items"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "body": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "description": "Representative merchant structure for useful comparisons; not a new paid request or proof of payment. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -            "properties": {
      -              "accounting": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "boundary": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "charged": {
      -                "type": "boolean"
      -              },
      -              "costInputs": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "error": {
      -                "type": "string"
      -              },
      -              "jobId": {
      -                "pattern": "^[a-f0-9]{64}$",
      -                "type": "string"
      -              },
      -              "jobStatus": {
      -                "enum": [
      -                  "running",
      -                  "completed",
      -                  "completed_with_unknown",
      -                  "stopped",
      -                  "interrupted"
      -                ],
      -                "type": "string"
      -              },
      -              "ok": {
      -                "type": "boolean"
      -              },
      -              "partial": {
      -                "type": "boolean"
      -              },
      -              "product": {
      -                "const": "samedaydesk-extract-batch",
      -                "type": "string"
      -              },
      -              "quote": {
      -                "additionalProperties": true,
      -                "properties": {
      -                  "amountAtomic": {
      -                    "const": "10000",
      -                    "type": "string"
      -                  },
      -                  "displayUsdc": {
      -                    "const": "0.01",
      -                    "type": "string"
      -                  },
      -                  "meaning": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "amountAtomic",
      -                  "displayUsdc",
      -                  "meaning"
      -                ],
      -                "type": "object"
      -              },
      -              "schemaVersion": {
      -                "const": "samedaydesk.extract-batch.v0",
      -                "type": "string"
      -              },
      -              "sources": {
      -                "items": {
      -                  "additionalProperties": true,
      -                  "properties": {
      -                    "data": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                          "properties": {
      -                            "aiReadiness": {
      -                              "description": "Selected extraction value: aiReadiness."
      -                            },
      -                            "canonical": {
      -                              "description": "Selected extraction value: canonical."
      -                            },
      -                            "description": {
      -                              "description": "Selected extraction value: description."
      -                            },
      -                            "headings": {
      -                              "description": "Selected extraction value: headings."
      -                            },
      -                            "jsonLd": {
      -                              "description": "Selected extraction value: jsonLd."
      -                            },
      -                            "lang": {
      -                              "description": "Selected extraction value: lang."
      -                            },
      -                            "links": {
      -                              "description": "Selected extraction value: links."
      -                            },
      -                            "openGraph": {
      -                              "description": "Selected extraction value: openGraph."
      -                            },
      -                            "text": {
      -                              "description": "Selected extraction value: text."
      -                            },
      -                            "title": {
      -                              "description": "Selected extraction value: title."
      -                            },
      -                            "twitter": {
      -                              "description": "Selected extraction value: twitter."
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      -                    },
      -                    "error": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "properties": {},
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "finalUrl": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "httpStatus": {
      -                      "anyOf": [
      -                        {
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "id": {
      -                      "description": "Row identifier; does not replace source identity.",
      -                      "type": "string"
      -                    },
      -                    "notes": {
      -                      "type": "array"
      -                    },
      -                    "provenance": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "properties": {},
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "source": {
      -                      "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      -                      "minLength": 1,
      -                      "pattern": "\\S",
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "enum": [
      -                        "pending",
      -                        "success",
      -                        "partial",
      -                        "failure",
      -                        "unknown",
      -                        "skipped_duplicate"
      -                      ],
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "source",
      -                    "status",
      -                    "data",
      -                    "notes",
      -                    "error",
      -                    "provenance"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 5,
      -                "minItems": 1,
      -                "type": "array"
      -              },
      -              "stopReason": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "ok",
      -              "product",
      -              "schemaVersion",
      -              "quote",
      -              "jobId",
      -              "jobStatus",
      -              "stopReason",
      -              "partial",
      -              "sources",
      -              "accounting",
      -              "costInputs",
      -              "charged",
      -              "boundary"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": true,
      -            "description": "Existing C1 result compatibility. No merchant product/schemaVersion is required. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -            "properties": {
      -              "accounting": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "costParameters": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "items": {
      -                "items": {
      -                  "additionalProperties": true,
      -                  "properties": {
      -                    "data": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                          "properties": {
      -                            "aiReadiness": {
      -                              "description": "Selected extraction value: aiReadiness."
      -                            },
      -                            "canonical": {
      -                              "description": "Selected extraction value: canonical."
      -                            },
      -                            "description": {
      -                              "description": "Selected extraction value: description."
      -                            },
      -                            "headings": {
      -                              "description": "Selected extraction value: headings."
      -                            },
      -                            "jsonLd": {
      -                              "description": "Selected extraction value: jsonLd."
      -                            },
      -                            "lang": {
      -                              "description": "Selected extraction value: lang."
      -                            },
      -                            "links": {
      -                              "description": "Selected extraction value: links."
      -                            },
      -                            "openGraph": {
      -                              "description": "Selected extraction value: openGraph."
      -                            },
      -                            "text": {
      -                              "description": "Selected extraction value: text."
      -                            },
      -                            "title": {
      -                              "description": "Selected extraction value: title."
      -                            },
      -                            "twitter": {
      -                              "description": "Selected extraction value: twitter."
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      -                    },
      -                    "error": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "properties": {},
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "finalUrl": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "httpStatus": {
      -                      "anyOf": [
      -                        {
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "id": {
      -                      "description": "Row identifier; does not replace source identity.",
      -                      "type": "string"
      -                    },
      -                    "notes": {
      -                      "type": "array"
      -                    },
      -                    "provenance": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "properties": {},
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "source": {
      -                      "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      -                      "minLength": 1,
      -                      "pattern": "\\S",
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "enum": [
      -                        "pending",
      -                        "success",
      -                        "partial",
      -                        "failure",
      -                        "unknown",
      -                        "skipped_duplicate"
      -                      ],
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "source",
      -                    "status",
      -                    "data",
      -                    "notes",
      -                    "error",
      -                    "provenance"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 32,
      -                "minItems": 1,
      -                "type": "array"
      -              },
      -              "jobId": {
      -                "type": "string"
      -              },
      -              "status": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "jobId",
      -              "status",
      -              "costParameters",
      -              "accounting",
      -              "items"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "mediaType": {
      -        "const": "application/json",
      -        "type": "string"
      -      },
      -      "observedAt": {
      -        "description": "Caller observation metadata only; does not attest freshness.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "status": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "body"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "description": "Intentionally permissive diagnostic alternative, not a template for a useful comparison. Missing/wrong schemas, keys, source identities or fields do not become valid comparison evidence. A missing snapshot can be supplied as {missing:true}. Safety admission still rejects paths, URL dereference, limit raises and invalid envelopes.",
      -    "properties": {},
      -    "type": "object"
      -  }
      -]
    • removedInput schema / properties / after / description
      Removed value: -"Already held JSON artifact or JSON envelope, never a path or URL to dereference. Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform. The structured branches describe representative comparable inputs. Incomplete objects remain admitted for diagnostic reports, subject to unchanged HTTP safety checks; HTTP 200 does not establish completeness or usefulness."
    • changedInput schema / properties / before / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "description": "Representative merchant structure for useful comparisons; not a new paid request or proof of payment. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -    "properties": {
      -      "accounting": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "boundary": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "charged": {
      -        "type": "boolean"
      -      },
      -      "costInputs": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "error": {
      -        "type": "string"
      -      },
      -      "jobId": {
      -        "pattern": "^[a-f0-9]{64}$",
      -        "type": "string"
      -      },
      -      "jobStatus": {
      -        "enum": [
      -          "running",
      -          "completed",
      -          "completed_with_unknown",
      -          "stopped",
      -          "interrupted"
      -        ],
      -        "type": "string"
      -      },
      -      "ok": {
      -        "type": "boolean"
      -      },
      -      "partial": {
      -        "type": "boolean"
      -      },
      -      "product": {
      -        "const": "samedaydesk-extract-batch",
      -        "type": "string"
      -      },
      -      "quote": {
      -        "additionalProperties": true,
      -        "properties": {
      -          "amountAtomic": {
      -            "const": "10000",
      -            "type": "string"
      -          },
      -          "displayUsdc": {
      -            "const": "0.01",
      -            "type": "string"
      -          },
      -          "meaning": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "amountAtomic",
      -          "displayUsdc",
      -          "meaning"
      -        ],
      -        "type": "object"
      -      },
      -      "schemaVersion": {
      -        "const": "samedaydesk.extract-batch.v0",
      -        "type": "string"
      -      },
      -      "sources": {
      -        "items": {
      -          "additionalProperties": true,
      -          "properties": {
      -            "data": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                  "properties": {
      -                    "aiReadiness": {
      -                      "description": "Selected extraction value: aiReadiness."
      -                    },
      -                    "canonical": {
      -                      "description": "Selected extraction value: canonical."
      -                    },
      -                    "description": {
      -                      "description": "Selected extraction value: description."
      -                    },
      -                    "headings": {
      -                      "description": "Selected extraction value: headings."
      -                    },
      -                    "jsonLd": {
      -                      "description": "Selected extraction value: jsonLd."
      -                    },
      -                    "lang": {
      -                      "description": "Selected extraction value: lang."
      -                    },
      -                    "links": {
      -                      "description": "Selected extraction value: links."
      -                    },
      -                    "openGraph": {
      -                      "description": "Selected extraction value: openGraph."
      -                    },
      -                    "text": {
      -                      "description": "Selected extraction value: text."
      -                    },
      -                    "title": {
      -                      "description": "Selected extraction value: title."
      -                    },
      -                    "twitter": {
      -                      "description": "Selected extraction value: twitter."
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                {
      -                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                  "type": "null"
      -                }
      -              ],
      -              "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      -            },
      -            "error": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "properties": {},
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "finalUrl": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "httpStatus": {
      -              "anyOf": [
      -                {
      -                  "type": "integer"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "id": {
      -              "description": "Row identifier; does not replace source identity.",
      -              "type": "string"
      -            },
      -            "notes": {
      -              "type": "array"
      -            },
      -            "provenance": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "properties": {},
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "source": {
      -              "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      -              "minLength": 1,
      -              "pattern": "\\S",
      -              "type": "string"
      -            },
      -            "status": {
      -              "enum": [
      -                "pending",
      -                "success",
      -                "partial",
      -                "failure",
      -                "unknown",
      -                "skipped_duplicate"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "source",
      -            "status",
      -            "data",
      -            "notes",
      -            "error",
      -            "provenance"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 5,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "stopReason": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "ok",
      -      "product",
      -      "schemaVersion",
      -      "quote",
      -      "jobId",
      -      "jobStatus",
      -      "stopReason",
      -      "partial",
      -      "sources",
      -      "accounting",
      -      "costInputs",
      -      "charged",
      -      "boundary"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "description": "Existing C1 result compatibility. No merchant product/schemaVersion is required. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -    "properties": {
      -      "accounting": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "costParameters": {
      -        "additionalProperties": true,
      -        "properties": {},
      -        "type": "object"
      -      },
      -      "items": {
      -        "items": {
      -          "additionalProperties": true,
      -          "properties": {
      -            "data": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                  "properties": {
      -                    "aiReadiness": {
      -                      "description": "Selected extraction value: aiReadiness."
      -                    },
      -                    "canonical": {
      -                      "description": "Selected extraction value: canonical."
      -                    },
      -                    "description": {
      -                      "description": "Selected extraction value: description."
      -                    },
      -                    "headings": {
      -                      "description": "Selected extraction value: headings."
      -                    },
      -                    "jsonLd": {
      -                      "description": "Selected extraction value: jsonLd."
      -                    },
      -                    "lang": {
      -                      "description": "Selected extraction value: lang."
      -                    },
      -                    "links": {
      -                      "description": "Selected extraction value: links."
      -                    },
      -                    "openGraph": {
      -                      "description": "Selected extraction value: openGraph."
      -                    },
      -                    "text": {
      -                      "description": "Selected extraction value: text."
      -                    },
      -                    "title": {
      -                      "description": "Selected extraction value: title."
      -                    },
      -                    "twitter": {
      -                      "description": "Selected extraction value: twitter."
      -                    }
      -                  },
      -                  "type": "object"
      -                },
      -                {
      -                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                  "type": "null"
      -                }
      -              ],
      -              "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      -            },
      -            "error": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "properties": {},
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "finalUrl": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "httpStatus": {
      -              "anyOf": [
      -                {
      -                  "type": "integer"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "id": {
      -              "description": "Row identifier; does not replace source identity.",
      -              "type": "string"
      -            },
      -            "notes": {
      -              "type": "array"
      -            },
      -            "provenance": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": true,
      -                  "properties": {},
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "source": {
      -              "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      -              "minLength": 1,
      -              "pattern": "\\S",
      -              "type": "string"
      -            },
      -            "status": {
      -              "enum": [
      -                "pending",
      -                "success",
      -                "partial",
      -                "failure",
      -                "unknown",
      -                "skipped_duplicate"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "source",
      -            "status",
      -            "data",
      -            "notes",
      -            "error",
      -            "provenance"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 32,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "jobId": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "jobId",
      -      "status",
      -      "costParameters",
      -      "accounting",
      -      "items"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "body": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "description": "Representative merchant structure for useful comparisons; not a new paid request or proof of payment. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -            "properties": {
      -              "accounting": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "boundary": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "charged": {
      -                "type": "boolean"
      -              },
      -              "costInputs": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "error": {
      -                "type": "string"
      -              },
      -              "jobId": {
      -                "pattern": "^[a-f0-9]{64}$",
      -                "type": "string"
      -              },
      -              "jobStatus": {
      -                "enum": [
      -                  "running",
      -                  "completed",
      -                  "completed_with_unknown",
      -                  "stopped",
      -                  "interrupted"
      -                ],
      -                "type": "string"
      -              },
      -              "ok": {
      -                "type": "boolean"
      -              },
      -              "partial": {
      -                "type": "boolean"
      -              },
      -              "product": {
      -                "const": "samedaydesk-extract-batch",
      -                "type": "string"
      -              },
      -              "quote": {
      -                "additionalProperties": true,
      -                "properties": {
      -                  "amountAtomic": {
      -                    "const": "10000",
      -                    "type": "string"
      -                  },
      -                  "displayUsdc": {
      -                    "const": "0.01",
      -                    "type": "string"
      -                  },
      -                  "meaning": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "amountAtomic",
      -                  "displayUsdc",
      -                  "meaning"
      -                ],
      -                "type": "object"
      -              },
      -              "schemaVersion": {
      -                "const": "samedaydesk.extract-batch.v0",
      -                "type": "string"
      -              },
      -              "sources": {
      -                "items": {
      -                  "additionalProperties": true,
      -                  "properties": {
      -                    "data": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                          "properties": {
      -                            "aiReadiness": {
      -                              "description": "Selected extraction value: aiReadiness."
      -                            },
      -                            "canonical": {
      -                              "description": "Selected extraction value: canonical."
      -                            },
      -                            "description": {
      -                              "description": "Selected extraction value: description."
      -                            },
      -                            "headings": {
      -                              "description": "Selected extraction value: headings."
      -                            },
      -                            "jsonLd": {
      -                              "description": "Selected extraction value: jsonLd."
      -                            },
      -                            "lang": {
      -                              "description": "Selected extraction value: lang."
      -                            },
      -                            "links": {
      -                              "description": "Selected extraction value: links."
      -                            },
      -                            "openGraph": {
      -                              "description": "Selected extraction value: openGraph."
      -                            },
      -                            "text": {
      -                              "description": "Selected extraction value: text."
      -                            },
      -                            "title": {
      -                              "description": "Selected extraction value: title."
      -                            },
      -                            "twitter": {
      -                              "description": "Selected extraction value: twitter."
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      -                    },
      -                    "error": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "properties": {},
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "finalUrl": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "httpStatus": {
      -                      "anyOf": [
      -                        {
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "id": {
      -                      "description": "Row identifier; does not replace source identity.",
      -                      "type": "string"
      -                    },
      -                    "notes": {
      -                      "type": "array"
      -                    },
      -                    "provenance": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "properties": {},
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "source": {
      -                      "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      -                      "minLength": 1,
      -                      "pattern": "\\S",
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "enum": [
      -                        "pending",
      -                        "success",
      -                        "partial",
      -                        "failure",
      -                        "unknown",
      -                        "skipped_duplicate"
      -                      ],
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "source",
      -                    "status",
      -                    "data",
      -                    "notes",
      -                    "error",
      -                    "provenance"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 5,
      -                "minItems": 1,
      -                "type": "array"
      -              },
      -              "stopReason": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "ok",
      -              "product",
      -              "schemaVersion",
      -              "quote",
      -              "jobId",
      -              "jobStatus",
      -              "stopReason",
      -              "partial",
      -              "sources",
      -              "accounting",
      -              "costInputs",
      -              "charged",
      -              "boundary"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "additionalProperties": true,
      -            "description": "Existing C1 result compatibility. No merchant product/schemaVersion is required. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -            "properties": {
      -              "accounting": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "costParameters": {
      -                "additionalProperties": true,
      -                "properties": {},
      -                "type": "object"
      -              },
      -              "items": {
      -                "items": {
      -                  "additionalProperties": true,
      -                  "properties": {
      -                    "data": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                          "properties": {
      -                            "aiReadiness": {
      -                              "description": "Selected extraction value: aiReadiness."
      -                            },
      -                            "canonical": {
      -                              "description": "Selected extraction value: canonical."
      -                            },
      -                            "description": {
      -                              "description": "Selected extraction value: description."
      -                            },
      -                            "headings": {
      -                              "description": "Selected extraction value: headings."
      -                            },
      -                            "jsonLd": {
      -                              "description": "Selected extraction value: jsonLd."
      -                            },
      -                            "lang": {
      -                              "description": "Selected extraction value: lang."
      -                            },
      -                            "links": {
      -                              "description": "Selected extraction value: links."
      -                            },
      -                            "openGraph": {
      -                              "description": "Selected extraction value: openGraph."
      -                            },
      -                            "text": {
      -                              "description": "Selected extraction value: text."
      -                            },
      -                            "title": {
      -                              "description": "Selected extraction value: title."
      -                            },
      -                            "twitter": {
      -                              "description": "Selected extraction value: twitter."
      -                            }
      -                          },
      -                          "type": "object"
      -                        },
      -                        {
      -                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      -                          "type": "null"
      -                        }
      -                      ],
      -                      "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      -                    },
      -                    "error": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "properties": {},
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "finalUrl": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "httpStatus": {
      -                      "anyOf": [
      -                        {
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "id": {
      -                      "description": "Row identifier; does not replace source identity.",
      -                      "type": "string"
      -                    },
      -                    "notes": {
      -                      "type": "array"
      -                    },
      -                    "provenance": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": true,
      -                          "properties": {},
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "source": {
      -                      "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      -                      "minLength": 1,
      -                      "pattern": "\\S",
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "enum": [
      -                        "pending",
      -                        "success",
      -                        "partial",
      -                        "failure",
      -                        "unknown",
      -                        "skipped_duplicate"
      -                      ],
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "source",
      -                    "status",
      -                    "data",
      -                    "notes",
      -                    "error",
      -                    "provenance"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 32,
      -                "minItems": 1,
      -                "type": "array"
      -              },
      -              "jobId": {
      -                "type": "string"
      -              },
      -              "status": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "jobId",
      -              "status",
      -              "costParameters",
      -              "accounting",
      -              "items"
      -            ],
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "mediaType": {
      -        "const": "application/json",
      -        "type": "string"
      -      },
      -      "observedAt": {
      -        "description": "Caller observation metadata only; does not attest freshness.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "status": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "body"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "description": "Intentionally permissive diagnostic alternative, not a template for a useful comparison. Missing/wrong schemas, keys, source identities or fields do not become valid comparison evidence. A missing snapshot can be supplied as {missing:true}. Safety admission still rejects paths, URL dereference, limit raises and invalid envelopes.",
      -    "properties": {},
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "Representative merchant structure for useful comparisons; not a new paid request or proof of payment. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +    "properties": {
      +      "accounting": {
      +        "$ref": "#/properties/before/anyOf/0/properties/sources/items/properties/error/anyOf/0"
      +      },
      +      "boundary": {
      +        "$ref": "#/properties/before/anyOf/0/properties/sources/items/properties/error/anyOf/0"
      +      },
      +      "charged": {
      +        "$ref": "#/properties/before/anyOf/0/properties/ok"
      +      },
      +      "costInputs": {
      +        "$ref": "#/properties/before/anyOf/0/properties/sources/items/properties/error/anyOf/0"
      +      },
      +      "error": {
      +        "$ref": "#/properties/before/anyOf/0/properties/quote/properties/meaning"
      +      },
      +      "jobId": {
      +        "pattern": "^[a-f0-9]{64}$",
      +        "type": "string"
      +      },
      +      "jobStatus": {
      +        "enum": [
      +          "running",
      +          "completed",
      +          "completed_with_unknown",
      +          "stopped",
      +          "interrupted"
      +        ],
      +        "type": "string"
      +      },
      +      "ok": {
      +        "type": "boolean"
      +      },
      +      "partial": {
      +        "$ref": "#/properties/before/anyOf/0/properties/ok"
      +      },
      +      "product": {
      +        "const": "samedaydesk-extract-batch",
      +        "type": "string"
      +      },
      +      "quote": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "amountAtomic": {
      +            "const": "10000",
      +            "type": "string"
      +          },
      +          "displayUsdc": {
      +            "const": "0.01",
      +            "type": "string"
      +          },
      +          "meaning": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "amountAtomic",
      +          "displayUsdc",
      +          "meaning"
      +        ],
      +        "type": "object"
      +      },
      +      "schemaVersion": {
      +        "const": "samedaydesk.extract-batch.v0",
      +        "type": "string"
      +      },
      +      "sources": {
      +        "items": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "data": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "properties": {
      +                    "aiReadiness": {
      +                      "description": "Selected extraction value: aiReadiness."
      +                    },
      +                    "canonical": {
      +                      "description": "Selected extraction value: canonical."
      +                    },
      +                    "description": {
      +                      "description": "Selected extraction value: description."
      +                    },
      +                    "headings": {
      +                      "description": "Selected extraction value: headings."
      +                    },
      +                    "jsonLd": {
      +                      "description": "Selected extraction value: jsonLd."
      +                    },
      +                    "lang": {
      +                      "description": "Selected extraction value: lang."
      +                    },
      +                    "links": {
      +                      "description": "Selected extraction value: links."
      +                    },
      +                    "openGraph": {
      +                      "description": "Selected extraction value: openGraph."
      +                    },
      +                    "text": {
      +                      "description": "Selected extraction value: text."
      +                    },
      +                    "title": {
      +                      "description": "Selected extraction value: title."
      +                    },
      +                    "twitter": {
      +                      "description": "Selected extraction value: twitter."
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      +            },
      +            "error": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "finalUrl": {
      +              "$ref": "#/properties/before/anyOf/0/properties/stopReason"
      +            },
      +            "httpStatus": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "$ref": "#/properties/before/anyOf/0/properties/sources/items/properties/error/anyOf/1"
      +                }
      +              ]
      +            },
      +            "id": {
      +              "description": "Row identifier; does not replace source identity.",
      +              "type": "string"
      +            },
      +            "notes": {
      +              "type": "array"
      +            },
      +            "provenance": {
      +              "$ref": "#/properties/before/anyOf/0/properties/sources/items/properties/error"
      +            },
      +            "source": {
      +              "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      +              "minLength": 1,
      +              "pattern": "\\S",
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "pending",
      +                "success",
      +                "partial",
      +                "failure",
      +                "unknown",
      +                "skipped_duplicate"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "source",
      +            "status",
      +            "data",
      +            "notes",
      +            "error",
      +            "provenance"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 5,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "stopReason": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "product",
      +      "schemaVersion",
      +      "quote",
      +      "jobId",
      +      "jobStatus",
      +      "stopReason",
      +      "partial",
      +      "sources",
      +      "accounting",
      +      "costInputs",
      +      "charged",
      +      "boundary"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "description": "Existing C1 result compatibility. No merchant product/schemaVersion is required. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +    "properties": {
      +      "accounting": {
      +        "$ref": "#/properties/before/anyOf/0/properties/sources/items/properties/error/anyOf/0"
      +      },
      +      "costParameters": {
      +        "$ref": "#/properties/before/anyOf/0/properties/sources/items/properties/error/anyOf/0"
      +      },
      +      "items": {
      +        "items": {
      +          "$ref": "#/properties/before/anyOf/0/properties/sources/items"
      +        },
      +        "maxItems": 32,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "jobId": {
      +        "$ref": "#/properties/before/anyOf/0/properties/quote/properties/meaning"
      +      },
      +      "status": {
      +        "$ref": "#/properties/before/anyOf/0/properties/quote/properties/meaning"
      +      }
      +    },
      +    "required": [
      +      "jobId",
      +      "status",
      +      "costParameters",
      +      "accounting",
      +      "items"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "body": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/properties/before/anyOf/0"
      +          },
      +          {
      +            "$ref": "#/properties/before/anyOf/1"
      +          }
      +        ]
      +      },
      +      "mediaType": {
      +        "const": "application/json",
      +        "type": "string"
      +      },
      +      "observedAt": {
      +        "description": "Caller observation metadata only; does not attest freshness.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "$ref": "#/properties/before/anyOf/0/properties/quote/properties/meaning"
      +      }
      +    },
      +    "required": [
      +      "body"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "description": "Intentionally permissive diagnostic alternative, not a template for a useful comparison. Missing/wrong schemas, keys, source identities or fields do not become valid comparison evidence. A missing snapshot can be supplied as {missing:true}. Safety admission still rejects paths, URL dereference, limit raises and invalid envelopes.",
      +    "properties": {},
      +    "type": "object"
      +  }
      +]
  2. Changed13 schema fields changed
    • removedInput schema / properties / after / additionalProperties
      Removed value: -{}
    • addedInput schema / properties / after / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "Representative merchant structure for useful comparisons; not a new paid request or proof of payment. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +    "properties": {
      +      "accounting": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "boundary": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "charged": {
      +        "type": "boolean"
      +      },
      +      "costInputs": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "jobId": {
      +        "pattern": "^[a-f0-9]{64}$",
      +        "type": "string"
      +      },
      +      "jobStatus": {
      +        "enum": [
      +          "running",
      +          "completed",
      +          "completed_with_unknown",
      +          "stopped",
      +          "interrupted"
      +        ],
      +        "type": "string"
      +      },
      +      "ok": {
      +        "type": "boolean"
      +      },
      +      "partial": {
      +        "type": "boolean"
      +      },
      +      "product": {
      +        "const": "samedaydesk-extract-batch",
      +        "type": "string"
      +      },
      +      "quote": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "amountAtomic": {
      +            "const": "10000",
      +            "type": "string"
      +          },
      +          "displayUsdc": {
      +            "const": "0.01",
      +            "type": "string"
      +          },
      +          "meaning": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "amountAtomic",
      +          "displayUsdc",
      +          "meaning"
      +        ],
      +        "type": "object"
      +      },
      +      "schemaVersion": {
      +        "const": "samedaydesk.extract-batch.v0",
      +        "type": "string"
      +      },
      +      "sources": {
      +        "items": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "data": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "properties": {
      +                    "aiReadiness": {
      +                      "description": "Selected extraction value: aiReadiness."
      +                    },
      +                    "canonical": {
      +                      "description": "Selected extraction value: canonical."
      +                    },
      +                    "description": {
      +                      "description": "Selected extraction value: description."
      +                    },
      +                    "headings": {
      +                      "description": "Selected extraction value: headings."
      +                    },
      +                    "jsonLd": {
      +                      "description": "Selected extraction value: jsonLd."
      +                    },
      +                    "lang": {
      +                      "description": "Selected extraction value: lang."
      +                    },
      +                    "links": {
      +                      "description": "Selected extraction value: links."
      +                    },
      +                    "openGraph": {
      +                      "description": "Selected extraction value: openGraph."
      +                    },
      +                    "text": {
      +                      "description": "Selected extraction value: text."
      +                    },
      +                    "title": {
      +                      "description": "Selected extraction value: title."
      +                    },
      +                    "twitter": {
      +                      "description": "Selected extraction value: twitter."
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      +            },
      +            "error": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "finalUrl": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "httpStatus": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "id": {
      +              "description": "Row identifier; does not replace source identity.",
      +              "type": "string"
      +            },
      +            "notes": {
      +              "type": "array"
      +            },
      +            "provenance": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "source": {
      +              "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      +              "minLength": 1,
      +              "pattern": "\\S",
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "pending",
      +                "success",
      +                "partial",
      +                "failure",
      +                "unknown",
      +                "skipped_duplicate"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "source",
      +            "status",
      +            "data",
      +            "notes",
      +            "error",
      +            "provenance"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 5,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "stopReason": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "product",
      +      "schemaVersion",
      +      "quote",
      +      "jobId",
      +      "jobStatus",
      +      "stopReason",
      +      "partial",
      +      "sources",
      +      "accounting",
      +      "costInputs",
      +      "charged",
      +      "boundary"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "description": "Existing C1 result compatibility. No merchant product/schemaVersion is required. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +    "properties": {
      +      "accounting": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "costParameters": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "items": {
      +        "items": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "data": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "properties": {
      +                    "aiReadiness": {
      +                      "description": "Selected extraction value: aiReadiness."
      +                    },
      +                    "canonical": {
      +                      "description": "Selected extraction value: canonical."
      +                    },
      +                    "description": {
      +                      "description": "Selected extraction value: description."
      +                    },
      +                    "headings": {
      +                      "description": "Selected extraction value: headings."
      +                    },
      +                    "jsonLd": {
      +                      "description": "Selected extraction value: jsonLd."
      +                    },
      +                    "lang": {
      +                      "description": "Selected extraction value: lang."
      +                    },
      +                    "links": {
      +                      "description": "Selected extraction value: links."
      +                    },
      +                    "openGraph": {
      +                      "description": "Selected extraction value: openGraph."
      +                    },
      +                    "text": {
      +                      "description": "Selected extraction value: text."
      +                    },
      +                    "title": {
      +                      "description": "Selected extraction value: title."
      +                    },
      +                    "twitter": {
      +                      "description": "Selected extraction value: twitter."
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      +            },
      +            "error": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "finalUrl": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "httpStatus": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "id": {
      +              "description": "Row identifier; does not replace source identity.",
      +              "type": "string"
      +            },
      +            "notes": {
      +              "type": "array"
      +            },
      +            "provenance": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "source": {
      +              "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      +              "minLength": 1,
      +              "pattern": "\\S",
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "pending",
      +                "success",
      +                "partial",
      +                "failure",
      +                "unknown",
      +                "skipped_duplicate"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "source",
      +            "status",
      +            "data",
      +            "notes",
      +            "error",
      +            "provenance"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 32,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "jobId": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "jobId",
      +      "status",
      +      "costParameters",
      +      "accounting",
      +      "items"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "body": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "description": "Representative merchant structure for useful comparisons; not a new paid request or proof of payment. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +            "properties": {
      +              "accounting": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "boundary": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "charged": {
      +                "type": "boolean"
      +              },
      +              "costInputs": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "error": {
      +                "type": "string"
      +              },
      +              "jobId": {
      +                "pattern": "^[a-f0-9]{64}$",
      +                "type": "string"
      +              },
      +              "jobStatus": {
      +                "enum": [
      +                  "running",
      +                  "completed",
      +                  "completed_with_unknown",
      +                  "stopped",
      +                  "interrupted"
      +                ],
      +                "type": "string"
      +              },
      +              "ok": {
      +                "type": "boolean"
      +              },
      +              "partial": {
      +                "type": "boolean"
      +              },
      +              "product": {
      +                "const": "samedaydesk-extract-batch",
      +                "type": "string"
      +              },
      +              "quote": {
      +                "additionalProperties": true,
      +                "properties": {
      +                  "amountAtomic": {
      +                    "const": "10000",
      +                    "type": "string"
      +                  },
      +                  "displayUsdc": {
      +                    "const": "0.01",
      +                    "type": "string"
      +                  },
      +                  "meaning": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "amountAtomic",
      +                  "displayUsdc",
      +                  "meaning"
      +                ],
      +                "type": "object"
      +              },
      +              "schemaVersion": {
      +                "const": "samedaydesk.extract-batch.v0",
      +                "type": "string"
      +              },
      +              "sources": {
      +                "items": {
      +                  "additionalProperties": true,
      +                  "properties": {
      +                    "data": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                          "properties": {
      +                            "aiReadiness": {
      +                              "description": "Selected extraction value: aiReadiness."
      +                            },
      +                            "canonical": {
      +                              "description": "Selected extraction value: canonical."
      +                            },
      +                            "description": {
      +                              "description": "Selected extraction value: description."
      +                            },
      +                            "headings": {
      +                              "description": "Selected extraction value: headings."
      +                            },
      +                            "jsonLd": {
      +                              "description": "Selected extraction value: jsonLd."
      +                            },
      +                            "lang": {
      +                              "description": "Selected extraction value: lang."
      +                            },
      +                            "links": {
      +                              "description": "Selected extraction value: links."
      +                            },
      +                            "openGraph": {
      +                              "description": "Selected extraction value: openGraph."
      +                            },
      +                            "text": {
      +                              "description": "Selected extraction value: text."
      +                            },
      +                            "title": {
      +                              "description": "Selected extraction value: title."
      +                            },
      +                            "twitter": {
      +                              "description": "Selected extraction value: twitter."
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      +                    },
      +                    "error": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "properties": {},
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "finalUrl": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "httpStatus": {
      +                      "anyOf": [
      +                        {
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "id": {
      +                      "description": "Row identifier; does not replace source identity.",
      +                      "type": "string"
      +                    },
      +                    "notes": {
      +                      "type": "array"
      +                    },
      +                    "provenance": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "properties": {},
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "source": {
      +                      "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      +                      "minLength": 1,
      +                      "pattern": "\\S",
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "enum": [
      +                        "pending",
      +                        "success",
      +                        "partial",
      +                        "failure",
      +                        "unknown",
      +                        "skipped_duplicate"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "source",
      +                    "status",
      +                    "data",
      +                    "notes",
      +                    "error",
      +                    "provenance"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 5,
      +                "minItems": 1,
      +                "type": "array"
      +              },
      +              "stopReason": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "ok",
      +              "product",
      +              "schemaVersion",
      +              "quote",
      +              "jobId",
      +              "jobStatus",
      +              "stopReason",
      +              "partial",
      +              "sources",
      +              "accounting",
      +              "costInputs",
      +              "charged",
      +              "boundary"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": true,
      +            "description": "Existing C1 result compatibility. No merchant product/schemaVersion is required. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +            "properties": {
      +              "accounting": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "costParameters": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "items": {
      +                "items": {
      +                  "additionalProperties": true,
      +                  "properties": {
      +                    "data": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                          "properties": {
      +                            "aiReadiness": {
      +                              "description": "Selected extraction value: aiReadiness."
      +                            },
      +                            "canonical": {
      +                              "description": "Selected extraction value: canonical."
      +                            },
      +                            "description": {
      +                              "description": "Selected extraction value: description."
      +                            },
      +                            "headings": {
      +                              "description": "Selected extraction value: headings."
      +                            },
      +                            "jsonLd": {
      +                              "description": "Selected extraction value: jsonLd."
      +                            },
      +                            "lang": {
      +                              "description": "Selected extraction value: lang."
      +                            },
      +                            "links": {
      +                              "description": "Selected extraction value: links."
      +                            },
      +                            "openGraph": {
      +                              "description": "Selected extraction value: openGraph."
      +                            },
      +                            "text": {
      +                              "description": "Selected extraction value: text."
      +                            },
      +                            "title": {
      +                              "description": "Selected extraction value: title."
      +                            },
      +                            "twitter": {
      +                              "description": "Selected extraction value: twitter."
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      +                    },
      +                    "error": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "properties": {},
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "finalUrl": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "httpStatus": {
      +                      "anyOf": [
      +                        {
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "id": {
      +                      "description": "Row identifier; does not replace source identity.",
      +                      "type": "string"
      +                    },
      +                    "notes": {
      +                      "type": "array"
      +                    },
      +                    "provenance": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "properties": {},
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "source": {
      +                      "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      +                      "minLength": 1,
      +                      "pattern": "\\S",
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "enum": [
      +                        "pending",
      +                        "success",
      +                        "partial",
      +                        "failure",
      +                        "unknown",
      +                        "skipped_duplicate"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "source",
      +                    "status",
      +                    "data",
      +                    "notes",
      +                    "error",
      +                    "provenance"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 32,
      +                "minItems": 1,
      +                "type": "array"
      +              },
      +              "jobId": {
      +                "type": "string"
      +              },
      +              "status": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "jobId",
      +              "status",
      +              "costParameters",
      +              "accounting",
      +              "items"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "mediaType": {
      +        "const": "application/json",
      +        "type": "string"
      +      },
      +      "observedAt": {
      +        "description": "Caller observation metadata only; does not attest freshness.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "body"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "description": "Intentionally permissive diagnostic alternative, not a template for a useful comparison. Missing/wrong schemas, keys, source identities or fields do not become valid comparison evidence. A missing snapshot can be supplied as {missing:true}. Safety admission still rejects paths, URL dereference, limit raises and invalid envelopes.",
      +    "properties": {},
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / after / description
      Previous value: -"Already delivered batch JSON object. Not a URL or filesystem path."New value: +"Already held JSON artifact or JSON envelope, never a path or URL to dereference. Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform. The structured branches describe representative comparable inputs. Incomplete objects remain admitted for diagnostic reports, subject to unchanged HTTP safety checks; HTTP 200 does not establish completeness or usefulness."
    • removedInput schema / properties / after / type
      Removed value: -"object"
    • addedInput schema / properties / allowFreshClaim
      Added value: +{
      +  "const": false,
      +  "description": "Supplied inputs cannot attest freshness. True is rejected.",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / before / additionalProperties
      Removed value: -{}
    • addedInput schema / properties / before / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "Representative merchant structure for useful comparisons; not a new paid request or proof of payment. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +    "properties": {
      +      "accounting": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "boundary": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "charged": {
      +        "type": "boolean"
      +      },
      +      "costInputs": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "jobId": {
      +        "pattern": "^[a-f0-9]{64}$",
      +        "type": "string"
      +      },
      +      "jobStatus": {
      +        "enum": [
      +          "running",
      +          "completed",
      +          "completed_with_unknown",
      +          "stopped",
      +          "interrupted"
      +        ],
      +        "type": "string"
      +      },
      +      "ok": {
      +        "type": "boolean"
      +      },
      +      "partial": {
      +        "type": "boolean"
      +      },
      +      "product": {
      +        "const": "samedaydesk-extract-batch",
      +        "type": "string"
      +      },
      +      "quote": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "amountAtomic": {
      +            "const": "10000",
      +            "type": "string"
      +          },
      +          "displayUsdc": {
      +            "const": "0.01",
      +            "type": "string"
      +          },
      +          "meaning": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "amountAtomic",
      +          "displayUsdc",
      +          "meaning"
      +        ],
      +        "type": "object"
      +      },
      +      "schemaVersion": {
      +        "const": "samedaydesk.extract-batch.v0",
      +        "type": "string"
      +      },
      +      "sources": {
      +        "items": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "data": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "properties": {
      +                    "aiReadiness": {
      +                      "description": "Selected extraction value: aiReadiness."
      +                    },
      +                    "canonical": {
      +                      "description": "Selected extraction value: canonical."
      +                    },
      +                    "description": {
      +                      "description": "Selected extraction value: description."
      +                    },
      +                    "headings": {
      +                      "description": "Selected extraction value: headings."
      +                    },
      +                    "jsonLd": {
      +                      "description": "Selected extraction value: jsonLd."
      +                    },
      +                    "lang": {
      +                      "description": "Selected extraction value: lang."
      +                    },
      +                    "links": {
      +                      "description": "Selected extraction value: links."
      +                    },
      +                    "openGraph": {
      +                      "description": "Selected extraction value: openGraph."
      +                    },
      +                    "text": {
      +                      "description": "Selected extraction value: text."
      +                    },
      +                    "title": {
      +                      "description": "Selected extraction value: title."
      +                    },
      +                    "twitter": {
      +                      "description": "Selected extraction value: twitter."
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      +            },
      +            "error": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "finalUrl": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "httpStatus": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "id": {
      +              "description": "Row identifier; does not replace source identity.",
      +              "type": "string"
      +            },
      +            "notes": {
      +              "type": "array"
      +            },
      +            "provenance": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "source": {
      +              "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      +              "minLength": 1,
      +              "pattern": "\\S",
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "pending",
      +                "success",
      +                "partial",
      +                "failure",
      +                "unknown",
      +                "skipped_duplicate"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "source",
      +            "status",
      +            "data",
      +            "notes",
      +            "error",
      +            "provenance"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 5,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "stopReason": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "ok",
      +      "product",
      +      "schemaVersion",
      +      "quote",
      +      "jobId",
      +      "jobStatus",
      +      "stopReason",
      +      "partial",
      +      "sources",
      +      "accounting",
      +      "costInputs",
      +      "charged",
      +      "boundary"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "description": "Existing C1 result compatibility. No merchant product/schemaVersion is required. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +    "properties": {
      +      "accounting": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "costParameters": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "items": {
      +        "items": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "data": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "properties": {
      +                    "aiReadiness": {
      +                      "description": "Selected extraction value: aiReadiness."
      +                    },
      +                    "canonical": {
      +                      "description": "Selected extraction value: canonical."
      +                    },
      +                    "description": {
      +                      "description": "Selected extraction value: description."
      +                    },
      +                    "headings": {
      +                      "description": "Selected extraction value: headings."
      +                    },
      +                    "jsonLd": {
      +                      "description": "Selected extraction value: jsonLd."
      +                    },
      +                    "lang": {
      +                      "description": "Selected extraction value: lang."
      +                    },
      +                    "links": {
      +                      "description": "Selected extraction value: links."
      +                    },
      +                    "openGraph": {
      +                      "description": "Selected extraction value: openGraph."
      +                    },
      +                    "text": {
      +                      "description": "Selected extraction value: text."
      +                    },
      +                    "title": {
      +                      "description": "Selected extraction value: title."
      +                    },
      +                    "twitter": {
      +                      "description": "Selected extraction value: twitter."
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      +            },
      +            "error": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "finalUrl": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "httpStatus": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "id": {
      +              "description": "Row identifier; does not replace source identity.",
      +              "type": "string"
      +            },
      +            "notes": {
      +              "type": "array"
      +            },
      +            "provenance": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "source": {
      +              "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      +              "minLength": 1,
      +              "pattern": "\\S",
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "pending",
      +                "success",
      +                "partial",
      +                "failure",
      +                "unknown",
      +                "skipped_duplicate"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "source",
      +            "status",
      +            "data",
      +            "notes",
      +            "error",
      +            "provenance"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 32,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "jobId": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "jobId",
      +      "status",
      +      "costParameters",
      +      "accounting",
      +      "items"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "body": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "description": "Representative merchant structure for useful comparisons; not a new paid request or proof of payment. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +            "properties": {
      +              "accounting": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "boundary": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "charged": {
      +                "type": "boolean"
      +              },
      +              "costInputs": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "error": {
      +                "type": "string"
      +              },
      +              "jobId": {
      +                "pattern": "^[a-f0-9]{64}$",
      +                "type": "string"
      +              },
      +              "jobStatus": {
      +                "enum": [
      +                  "running",
      +                  "completed",
      +                  "completed_with_unknown",
      +                  "stopped",
      +                  "interrupted"
      +                ],
      +                "type": "string"
      +              },
      +              "ok": {
      +                "type": "boolean"
      +              },
      +              "partial": {
      +                "type": "boolean"
      +              },
      +              "product": {
      +                "const": "samedaydesk-extract-batch",
      +                "type": "string"
      +              },
      +              "quote": {
      +                "additionalProperties": true,
      +                "properties": {
      +                  "amountAtomic": {
      +                    "const": "10000",
      +                    "type": "string"
      +                  },
      +                  "displayUsdc": {
      +                    "const": "0.01",
      +                    "type": "string"
      +                  },
      +                  "meaning": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "amountAtomic",
      +                  "displayUsdc",
      +                  "meaning"
      +                ],
      +                "type": "object"
      +              },
      +              "schemaVersion": {
      +                "const": "samedaydesk.extract-batch.v0",
      +                "type": "string"
      +              },
      +              "sources": {
      +                "items": {
      +                  "additionalProperties": true,
      +                  "properties": {
      +                    "data": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                          "properties": {
      +                            "aiReadiness": {
      +                              "description": "Selected extraction value: aiReadiness."
      +                            },
      +                            "canonical": {
      +                              "description": "Selected extraction value: canonical."
      +                            },
      +                            "description": {
      +                              "description": "Selected extraction value: description."
      +                            },
      +                            "headings": {
      +                              "description": "Selected extraction value: headings."
      +                            },
      +                            "jsonLd": {
      +                              "description": "Selected extraction value: jsonLd."
      +                            },
      +                            "lang": {
      +                              "description": "Selected extraction value: lang."
      +                            },
      +                            "links": {
      +                              "description": "Selected extraction value: links."
      +                            },
      +                            "openGraph": {
      +                              "description": "Selected extraction value: openGraph."
      +                            },
      +                            "text": {
      +                              "description": "Selected extraction value: text."
      +                            },
      +                            "title": {
      +                              "description": "Selected extraction value: title."
      +                            },
      +                            "twitter": {
      +                              "description": "Selected extraction value: twitter."
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      +                    },
      +                    "error": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "properties": {},
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "finalUrl": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "httpStatus": {
      +                      "anyOf": [
      +                        {
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "id": {
      +                      "description": "Row identifier; does not replace source identity.",
      +                      "type": "string"
      +                    },
      +                    "notes": {
      +                      "type": "array"
      +                    },
      +                    "provenance": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "properties": {},
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "source": {
      +                      "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      +                      "minLength": 1,
      +                      "pattern": "\\S",
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "enum": [
      +                        "pending",
      +                        "success",
      +                        "partial",
      +                        "failure",
      +                        "unknown",
      +                        "skipped_duplicate"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "source",
      +                    "status",
      +                    "data",
      +                    "notes",
      +                    "error",
      +                    "provenance"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 5,
      +                "minItems": 1,
      +                "type": "array"
      +              },
      +              "stopReason": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "ok",
      +              "product",
      +              "schemaVersion",
      +              "quote",
      +              "jobId",
      +              "jobStatus",
      +              "stopReason",
      +              "partial",
      +              "sources",
      +              "accounting",
      +              "costInputs",
      +              "charged",
      +              "boundary"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": true,
      +            "description": "Existing C1 result compatibility. No merchant product/schemaVersion is required. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +            "properties": {
      +              "accounting": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "costParameters": {
      +                "additionalProperties": true,
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "items": {
      +                "items": {
      +                  "additionalProperties": true,
      +                  "properties": {
      +                    "data": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                          "properties": {
      +                            "aiReadiness": {
      +                              "description": "Selected extraction value: aiReadiness."
      +                            },
      +                            "canonical": {
      +                              "description": "Selected extraction value: canonical."
      +                            },
      +                            "description": {
      +                              "description": "Selected extraction value: description."
      +                            },
      +                            "headings": {
      +                              "description": "Selected extraction value: headings."
      +                            },
      +                            "jsonLd": {
      +                              "description": "Selected extraction value: jsonLd."
      +                            },
      +                            "lang": {
      +                              "description": "Selected extraction value: lang."
      +                            },
      +                            "links": {
      +                              "description": "Selected extraction value: links."
      +                            },
      +                            "openGraph": {
      +                              "description": "Selected extraction value: openGraph."
      +                            },
      +                            "text": {
      +                              "description": "Selected extraction value: text."
      +                            },
      +                            "title": {
      +                              "description": "Selected extraction value: title."
      +                            },
      +                            "twitter": {
      +                              "description": "Selected extraction value: twitter."
      +                            }
      +                          },
      +                          "type": "object"
      +                        },
      +                        {
      +                          "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta.",
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
      +                    },
      +                    "error": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "properties": {},
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "finalUrl": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "httpStatus": {
      +                      "anyOf": [
      +                        {
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "id": {
      +                      "description": "Row identifier; does not replace source identity.",
      +                      "type": "string"
      +                    },
      +                    "notes": {
      +                      "type": "array"
      +                    },
      +                    "provenance": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": true,
      +                          "properties": {},
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "source": {
      +                      "description": "Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform.",
      +                      "minLength": 1,
      +                      "pattern": "\\S",
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "enum": [
      +                        "pending",
      +                        "success",
      +                        "partial",
      +                        "failure",
      +                        "unknown",
      +                        "skipped_duplicate"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "source",
      +                    "status",
      +                    "data",
      +                    "notes",
      +                    "error",
      +                    "provenance"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 32,
      +                "minItems": 1,
      +                "type": "array"
      +              },
      +              "jobId": {
      +                "type": "string"
      +              },
      +              "status": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "jobId",
      +              "status",
      +              "costParameters",
      +              "accounting",
      +              "items"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "mediaType": {
      +        "const": "application/json",
      +        "type": "string"
      +      },
      +      "observedAt": {
      +        "description": "Caller observation metadata only; does not attest freshness.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "body"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "description": "Intentionally permissive diagnostic alternative, not a template for a useful comparison. Missing/wrong schemas, keys, source identities or fields do not become valid comparison evidence. A missing snapshot can be supplied as {missing:true}. Safety admission still rejects paths, URL dereference, limit raises and invalid envelopes.",
      +    "properties": {},
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / before / description
      Previous value: -"Already delivered batch JSON object. Not a URL or filesystem path."New value: +"Already held JSON artifact or JSON envelope, never a path or URL to dereference. Stable source identity, separate from row id and observation time. Matching normalizes source strings (URL fragments removed). Use the same non-empty identity on both sides; duplicate active identities are ambiguous. Synthetic URL STRINGS are inert and are never fetched by this transform. The structured branches describe representative comparable inputs. Incomplete objects remain admitted for diagnostic reports, subject to unchanged HTTP safety checks; HTTP 200 does not establish completeness or usefulness."
    • removedInput schema / properties / before / type
      Removed value: -"object"
    • addedInput schema / properties / clock
      Added value: +{
      +  "description": "Optional caller UTC ISO-8601 timestamp with trailing Z, accepted for compatibility only; cannot attest freshness.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedInput schema / properties / fields / description
      Previous value: -"Explicit field names to compare."New value: +"Explicit non-empty unique subset of supported fields. Compare only the explicitly selected data keys present on both matched rows. Missing keys are coverage unknown, not deletions; explicit null is a present value. Unselected metadata is not a content delta."
    • addedInput schema / properties / fields / items / enum
      Added value: +[
      +  "title",
      +  "description",
      +  "canonical",
      +  "lang",
      +  "openGraph",
      +  "twitter",
      +  "jsonLd",
      +  "headings",
      +  "links",
      +  "text",
      +  "aiReadiness"
      +]
    • addedInput schema / properties / maxStaleMs
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "Optional freshness horizon, not a compute ceiling or freshness authority.",
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "description": "Optional freshness horizon, not a compute ceiling or freshness authority.",
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Optional freshness horizon, not a compute ceiling or freshness authority."
      +}
  3. Added

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: charged is false, no payment/receipt/freshness is evidenced, and it defines the comparison semantics (missing keys mean coverage unknown, explicit null is a present value, unselected metadata is not a delta). It does not describe the shape of the comparison result or failure behavior, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is correctly front-loaded, but the body then repeats the identical 'SYNTHETIC offline construction example only' disclaimer roughly eight times and embeds a multi-hundred-token JSON example that largely restates the input schema. A large fraction of the text does not add information beyond what the schema already encodes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Inputs, safety boundaries, and matching semantics are well covered for a six-parameter tool, but there is no output schema and the description never says what a comparison result looks like (delta structure, per-field changed/added/removed reporting). An agent knows how to call it but not how to interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 83%, so the baseline is 3, but the description earns more: it explains that 'fields' selects which data keys are compared and that matching happens on the same non-empty source identity, with duplicate identities ambiguous. The worked before/after/fields example also clarifies how the required parameters compose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: 'Compare two already-held extract-batch JSON artifacts.' The negative scope ('Does not fetch, pay, or schedule a second observation') separates it from extract/extract_batch, which actually observe pages, so an agent can pick the right tool without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Establishes a clear precondition, namely that both artifacts are already in hand, and rules out re-observation or payment. It never names an alternative sibling (e.g. extract_batch) as the tool to use when you do need a fresh observation, so the routing guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.