{
  "title": "Avro Schema Compatibility Checker",
  "human_url": "https://happytails.ai/en/developer-tools/avro-schema-compatibility-checker/",
  "agent_url": "https://happytails.ai/agents/en/developer-tools/avro-schema-compatibility-checker/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/developer-tools/avro-schema-compatibility-checker.md",
  "content": "Avro Schema Compatibility Checker\nCheck whether a new Avro schema can still read data written with the old one, or the other way round. Every field, type and enum symbol that blocks compatibility is listed with its path.\nHow to use Avro Schema Compatibility Checker\nPaste the earlier Avro schema in the main box, or {\"versions\":[...]} for a transitive mode.\nPaste the new schema in the New schema field.\nChoose backward, forward or full compatibility.\nRun the check and download the JSON report or the CSV list of problems.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nUseful next steps\nProtobuf Compatibility Checker\nJSON schema validator\nJSON diff\nAccepts Avro schemas as JSON of up to 1,000,000 characters each, with at most 50,000 JSON values and 64 nesting levels, and up to 50 earlier versions for transitive modes. The check runs in your browser in a background worker. Downloads are a JSON report and a CSV list of problems.\nModes\nBackward means the new schema can read data written with the old one, which is what a consumer upgrade needs. Forward means the old schema can read data written with the new one. Full checks both. The transitive modes check the new schema against every earlier version you list, oldest first, instead of only the latest one.\nResolution rules\nChecks follow the Schema Resolution section of the Avro 1.11 specification: int promotes to long, float and double, long to float and double, float to double, and string and bytes to each other. Records match by full name, unqualified name or a reader alias. A reader field the writer does not have needs a valid default. A reader enum needs every writer symbol unless it has a default. Each branch of a writer union must resolve in the reader.\nLimits of the check\nThis checks Avro schema resolution rather than extra rules of a particular schema registry. Valid decimal logical types must have equal precision and scale, for both bytes and fixed encodings. Unknown or invalid logical types use the underlying Avro type. Union defaults are checked against the first branch; nested defaults are validated recursively.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Protobuf Compatibility Checker",
      "url": "https://happytails.ai/en/developer-tools/protobuf-compatibility-checker/"
    },
    {
      "name": "JSON schema validator",
      "url": "https://happytails.ai/en/developer-tools/json-schema-validator/"
    },
    {
      "name": "JSON diff",
      "url": "https://happytails.ai/en/developer-tools/json-diff/"
    }
  ],
  "tool": {
    "id": "avro-schema-compatibility-checker",
    "category": "developer-tools",
    "built": true,
    "requirements": "Accepts Avro schemas as JSON of up to 1,000,000 characters each, with at most 50,000 JSON values and 64 nesting levels, and up to 50 earlier versions for transitive modes. The check runs in your browser in a background worker. Downloads are a JSON report and a CSV list of problems.",
    "implementation": {
      "fields": [
        {
          "key": "next",
          "label": "New schema",
          "value": "",
          "type": "textarea",
          "maxLength": 1000000,
          "help": "The changed Avro schema as JSON. Paste the earlier schema in the main input."
        },
        {
          "key": "mode",
          "label": "Compatibility mode",
          "value": "backward",
          "type": "select",
          "values": [
            "backward",
            "forward",
            "full",
            "backward-transitive",
            "forward-transitive",
            "full-transitive"
          ],
          "labels": {
            "backward": "Backward compatibility",
            "forward": "Forward compatibility",
            "full": "Full compatibility",
            "backward-transitive": "Backward compatibility across earlier versions",
            "forward-transitive": "Forward compatibility across earlier versions",
            "full-transitive": "Full compatibility across earlier versions"
          }
        }
      ],
      "registrationFamily": "api-contracts-schemas",
      "codeDirection": "ltr",
      "inputMaxLength": 1000000,
      "inputErrorCode": "API_CONTRACTS_SCHEMAS_TOO_LONG_AVRO_SCHEMA_COMPATIBILITY_CHECKER",
      "note": "Runs in your browser in a background worker. Accepts Avro schemas of up to 1000000 characters and 50 earlier versions for transitive modes.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "Earlier Avro schema",
        "placeholder": "{\"type\":\"record\",\"name\":\"User\",\"fields\":[...]}",
        "help": "The writer schema as JSON, or {\"versions\":[...]} with earlier schemas oldest first for transitive modes. Up to 1,000,000 characters. Review the settings before running.",
        "helpParts": [
          "The writer schema as JSON, or {\"versions\":[...]} with earlier schemas oldest first for transitive modes.",
          "Up to 1,000,000 characters.",
          "Review the settings before running."
        ],
        "action": null
      },
      "mode": "explicit",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# Avro Schema Compatibility Checker\n\n- Human page: https://happytails.ai/en/developer-tools/avro-schema-compatibility-checker/\n- Markdown: https://happytails.ai/en/developer-tools/avro-schema-compatibility-checker.md\n- Structured JSON: https://happytails.ai/agents/en/developer-tools/avro-schema-compatibility-checker/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `avro-schema-compatibility-checker` |\n| Category | developer-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nRuns in your browser in a background worker. Accepts Avro schemas of up to 1000000 characters and 50 earlier versions for transitive modes.\n\n### Inputs and settings\n\nText input: Earlier Avro schema.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\n{\"type\":\"record\",\"name\":\"User\",\"fields\":[...]}\n```\n\nThe writer schema as JSON, or {\"versions\":[...]} with earlier schemas oldest first for transitive modes. Up to 1,000,000 characters. Review the settings before running.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `next` | New schema | textarea | \"\" |  |\n| `mode` | Compatibility mode | select | \"backward\" | Allowed: backward, forward, full, backward-transitive, forward-transitive, full-transitive |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nAccepts Avro schemas as JSON of up to 1,000,000 characters each, with at most 50,000 JSON values and 64 nesting levels, and up to 50 earlier versions for transitive modes. The check runs in your browser in a background worker. Downloads are a JSON report and a CSV list of problems.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"avro-schema-compatibility-checker\",\n  \"category\": \"developer-tools\",\n  \"built\": true,\n  \"requirements\": \"Accepts Avro schemas as JSON of up to 1,000,000 characters each, with at most 50,000 JSON values and 64 nesting levels, and up to 50 earlier versions for transitive modes. The check runs in your browser in a background worker. Downloads are a JSON report and a CSV list of problems.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"next\",\n        \"label\": \"New schema\",\n        \"value\": \"\",\n        \"type\": \"textarea\",\n        \"maxLength\": 1000000,\n        \"help\": \"The changed Avro schema as JSON. Paste the earlier schema in the main input.\"\n      },\n      {\n        \"key\": \"mode\",\n        \"label\": \"Compatibility mode\",\n        \"value\": \"backward\",\n        \"type\": \"select\",\n        \"values\": [\n          \"backward\",\n          \"forward\",\n          \"full\",\n          \"backward-transitive\",\n          \"forward-transitive\",\n          \"full-transitive\"\n        ],\n        \"labels\": {\n          \"backward\": \"Backward compatibility\",\n          \"forward\": \"Forward compatibility\",\n          \"full\": \"Full compatibility\",\n          \"backward-transitive\": \"Backward compatibility across earlier versions\",\n          \"forward-transitive\": \"Forward compatibility across earlier versions\",\n          \"full-transitive\": \"Full compatibility across earlier versions\"\n        }\n      }\n    ],\n    \"registrationFamily\": \"api-contracts-schemas\",\n    \"codeDirection\": \"ltr\",\n    \"inputMaxLength\": 1000000,\n    \"inputErrorCode\": \"API_CONTRACTS_SCHEMAS_TOO_LONG_AVRO_SCHEMA_COMPATIBILITY_CHECKER\",\n    \"note\": \"Runs in your browser in a background worker. Accepts Avro schemas of up to 1000000 characters and 50 earlier versions for transitive modes.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"Earlier Avro schema\",\n      \"placeholder\": \"{\\\"type\\\":\\\"record\\\",\\\"name\\\":\\\"User\\\",\\\"fields\\\":[...]}\",\n      \"help\": \"The writer schema as JSON, or {\\\"versions\\\":[...]} with earlier schemas oldest first for transitive modes. Up to 1,000,000 characters. Review the settings before running.\",\n      \"helpParts\": [\n        \"The writer schema as JSON, or {\\\"versions\\\":[...]} with earlier schemas oldest first for transitive modes.\",\n        \"Up to 1,000,000 characters.\",\n        \"Review the settings before running.\"\n      ],\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nCheck whether a new Avro schema can still read data written with the old one, or the other way round. Every field, type and enum symbol that blocks compatibility is listed with its path.\n\n### How to use Avro Schema Compatibility Checker\n\n1. Paste the earlier Avro schema in the main box, or {\"versions\":\\[...\\]} for a transitive mode.\n2. Paste the new schema in the New schema field.\n3. Choose backward, forward or full compatibility.\n4. Run the check and download the JSON report or the CSV list of problems.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n## Useful next steps\n\n- [Protobuf Compatibility Checker](https://happytails.ai/en/developer-tools/protobuf-compatibility-checker/) ([Markdown](https://happytails.ai/en/developer-tools/protobuf-compatibility-checker.md))\n\n- [JSON schema validator](https://happytails.ai/en/developer-tools/json-schema-validator/) ([Markdown](https://happytails.ai/en/developer-tools/json-schema-validator.md))\n\n- [JSON diff](https://happytails.ai/en/developer-tools/json-diff/) ([Markdown](https://happytails.ai/en/developer-tools/json-diff.md))\n\nAccepts Avro schemas as JSON of up to 1,000,000 characters each, with at most 50,000 JSON values and 64 nesting levels, and up to 50 earlier versions for transitive modes. The check runs in your browser in a background worker. Downloads are a JSON report and a CSV list of problems.\n\n## Modes\n\nBackward means the new schema can read data written with the old one, which is what a consumer upgrade needs. Forward means the old schema can read data written with the new one. Full checks both. The transitive modes check the new schema against every earlier version you list, oldest first, instead of only the latest one.\n\n### Resolution rules\n\nChecks follow the Schema Resolution section of the Avro 1.11 specification: int promotes to long, float and double, long to float and double, float to double, and string and bytes to each other. Records match by full name, unqualified name or a reader alias. A reader field the writer does not have needs a valid default. A reader enum needs every writer symbol unless it has a default. Each branch of a writer union must resolve in the reader.\n\n### Limits of the check\n\nThis checks Avro schema resolution rather than extra rules of a particular schema registry. Valid decimal logical types must have equal precision and scale, for both bytes and fixed encodings. Unknown or invalid logical types use the underlying Avro type. Union defaults are checked against the first branch; nested defaults are validated recursively.\n"
}