Skip to main content
Glama

Core API diff between versions

what_changed
Read-onlyIdempotent

Answer "what changed in the core API between two core versions": symbols added, deprecated and removed, as ranked groups with counts. One symbol: lookup_core_symbol. Human write-ups: list_change_records. Every row of one bucket: flat=true with bucket, paged. Every row of the whole diff: the result's bulk block, with attach and sql for the published catalog. Write those rows to a file, so they stay out of the context window.

  • Bounds are inclusive. Forms: 11.2, 11.2.x, 11.2.0, 11, 11.x. The same version twice is one minor. Upgrading 11.2 → 11.4 means from=11.3. Buckets are independent.

  • Grouped (default): a head entry is a symbol group; grouped_by is change_record, name_prefix or singleton. head: groups, up to 5. count: symbols. group_count: groups. members: up to 3 per group, highest usage first. Group fields appear only when every member agrees. Rank: max_projects_using desc, then member_count magnitude, tier, count, key; ranked_by states it. When head_covers_all_callers is false, narrow with kind or min_projects_using, or page with offset.

  • Flat (flat=true, bucket=added, deprecated, removed): rows by projects_using then fqn. Each row: fqn, kind, subsystem, stamp, projects_using, removal_in, removal_kind, replacement when the catalog lists one, change_record_nids. count: public symbols in the bucket after filters. limit ≤ 100. next_offset is absent on the last page.

  • Filters apply to every count. internal_excluded and test_theme_excluded are counted apart and left out. unplaceable_symbols have no minor in their stamp.

  • Usage: contrib development branches only, from the evidence rollup as of usage_evidence_built_at. 0 means no caller observed.

  • change_record_nids: for get_change_record. removal_kind observed: gone. removal_kind scheduled: promised and still present; say "scheduled for removal in 13.0".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYesUpper bound, inclusive, same forms.
flatNotrue: one bucket as flat symbol rows, paged, instead of three buckets of ranked groups. Needs bucket.
fromYesLower core version bound, inclusive: 11.2, 11.2.x, 11.2.0, 11, 11.x. Upgrading from 11.2 means from=11.3.
headNoGroups per bucket, 1 to 5 (default 5). Ignored when flat is true.
kindNoRestrict to one symbol kind (method, class, function, hook, service, library …). Applies to counts too.
limitNoWith flat: rows per page, 1 to 100 (default 50). A page of very long fqns may come back shorter. next_offset always says where the next page starts.
bucketNoWith flat: which side of the diff to list, added, deprecated, or removed. One bucket per call.
offsetNoSkip this many groups per bucket (grouped) or rows (flat), in ranked order. Flat: pass the previous page's next_offset.
min_projects_usingNoDrop symbols fewer than this many contrib projects call on a development branch. Applies to counts too.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed5 schema fields changed
    • changedInput schema / properties / bucket / description
      Previous value: -"With flat: which side of the diff to list, added, deprecated, or removed; one bucket per call."New value: +"With flat: which side of the diff to list, added, deprecated, or removed. One bucket per call."
    • changedInput schema / properties / flat / description
      Previous value: -"true = one bucket as flat symbol rows, paged, instead of three buckets of ranked groups. Needs bucket."New value: +"true: one bucket as flat symbol rows, paged, instead of three buckets of ranked groups. Needs bucket."
    • changedInput schema / properties / kind / description
      Previous value: -"Restrict to one symbol kind (method, class, function, hook, service, library …); applies to counts too."New value: +"Restrict to one symbol kind (method, class, function, hook, service, library …). Applies to counts too."
    • changedInput schema / properties / limit / description
      Previous value: -"With flat: rows per page, 1 to 100 (default 50). A page of very long names may come back shorter; next_offset always says where the next page starts."New value: +"With flat: rows per page, 1 to 100 (default 50). A page of very long fqns may come back shorter. next_offset always says where the next page starts."
    • changedInput schema / properties / min_projects_using / description
      Previous value: -"Drop symbols fewer than this many contrib projects call on a development branch; applies to counts too."New value: +"Drop symbols fewer than this many contrib projects call on a development branch. Applies to counts too."
  2. Changed5 schema fields changed
    • addedInput schema / properties / bucket
      Added value: +{
      +  "description": "With flat: which side of the diff to list, added, deprecated, or removed; one bucket per call.",
      +  "type": "string"
      +}
    • addedInput schema / properties / flat
      Added value: +{
      +  "description": "true = one bucket as flat symbol rows, paged, instead of three buckets of ranked groups. Needs bucket.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / head / description
      Previous value: -"Groups per bucket, 1 to 5 (default 5)."New value: +"Groups per bucket, 1 to 5 (default 5). Ignored when flat is true."
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "With flat: rows per page, 1 to 100 (default 50). A page of very long names may come back shorter; next_offset always says where the next page starts.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / offset / description
      Previous value: -"Skip this many groups per bucket, in ranked order."New value: +"Skip this many groups per bucket (grouped) or rows (flat), in ranked order. Flat: pass the previous page's next_offset."
  3. Changed7 schema fields changed
    • changedInput schema / properties / from / description
      Previous value: -"Lower core version bound, inclusive — its own changes are included. To ask what an upgrade from 11.2 to 11.4 requires, pass from=11.3: 11.2 shipped before the site was on it. Write the version the way people say it: 11.2, 11.2.x, 11.2.0, 11, or 11.x. A bare major starts at its first minor."New value: +"Lower core version bound, inclusive: 11.2, 11.2.x, 11.2.0, 11, 11.x. Upgrading from 11.2 means from=11.3."
    • changedInput schema / properties / head / description
      Previous value: -"How many groups to return per bucket, 1 to 5 (the default). Narrow with kind or min_projects_using, or page with offset; those change which groups you get."New value: +"Groups per bucket, 1 to 5 (default 5)."
    • changedInput schema / properties / kind / description
      Previous value: -"Restrict to one symbol kind: method, class, function, property, class_constant, interface, trait, hook, service, library, twig_template, constant, enum, module, theme. Applies to the counts as well as the head."New value: +"Restrict to one symbol kind (method, class, function, hook, service, library …); applies to counts too."
    • changedInput schema / properties / min_projects_using / description
      Previous value: -"Drop symbols fewer than this many contrib projects call on a development branch. Set it to 1 to see only changes with a known caller. Applies to the counts as well as the head, like kind."New value: +"Drop symbols fewer than this many contrib projects call on a development branch; applies to counts too."
    • changedInput schema / properties / offset / description
      Previous value: -"Skip this many groups per bucket, in the same ranked order, to page past the head."New value: +"Skip this many groups per bucket, in ranked order."
    • changedInput schema / properties / to / description
      Previous value: -"Upper core version bound, inclusive. Same forms as from. A bare major covers every minor of it."New value: +"Upper bound, inclusive, same forms."
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "added": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "count": {
      -          "type": "integer"
      -        },
      -        "group_count": {
      -          "type": "integer"
      -        },
      -        "head": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "change_record_nids": {
      -                "items": {
      -                  "type": "integer"
      -                },
      -                "type": [
      -                  "null",
      -                  "array"
      -                ]
      -              },
      -              "deprecated_in": {
      -                "type": "string"
      -              },
      -              "group_key": {
      -                "type": "string"
      -              },
      -              "grouped_by": {
      -                "type": "string"
      -              },
      -              "kind": {
      -                "type": "string"
      -              },
      -              "label": {
      -                "type": "string"
      -              },
      -              "max_projects_using": {
      -                "type": "integer"
      -              },
      -              "member_count": {
      -                "type": "integer"
      -              },
      -              "members": {
      -                "items": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "fqn": {
      -                      "type": "string"
      -                    },
      -                    "projects_using": {
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "fqn",
      -                    "projects_using"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": [
      -                  "null",
      -                  "array"
      -                ]
      -              },
      -              "members_with_callers": {
      -                "type": "integer"
      -              },
      -              "removal_in": {
      -                "type": "string"
      -              },
      -              "removal_kind": {
      -                "type": "string"
      -              },
      -              "subsystem": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "label",
      -              "grouped_by",
      -              "group_key",
      -              "change_record_nids",
      -              "member_count",
      -              "members_with_callers",
      -              "max_projects_using",
      -              "members"
      -            ],
      -            "type": "object"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "head_covers_all_callers": {
      -          "type": "boolean"
      -        },
      -        "internal_excluded": {
      -          "type": "integer"
      -        },
      -        "observed_removals": {
      -          "type": "integer"
      -        },
      -        "scheduled_removals": {
      -          "type": "integer"
      -        },
      -        "test_theme_excluded": {
      -          "type": "integer"
      -        },
      -        "with_contrib_callers": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "count",
      -        "internal_excluded",
      -        "test_theme_excluded",
      -        "with_contrib_callers",
      -        "group_count",
      -        "head_covers_all_callers",
      -        "head"
      -      ],
      -      "type": "object"
      -    },
      -    "bulk": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "attach": {
      -          "type": "string"
      -        },
      -        "sql": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "attach",
      -        "sql"
      -      ],
      -      "type": [
      -        "null",
      -        "object"
      -      ]
      -    },
      -    "deprecated": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "count": {
      -          "type": "integer"
      -        },
      -        "group_count": {
      -          "type": "integer"
      -        },
      -        "head": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "change_record_nids": {
      -                "items": {
      -                  "type": "integer"
      -                },
      -                "type": [
      -                  "null",
      -                  "array"
      -                ]
      -              },
      -              "deprecated_in": {
      -                "type": "string"
      -              },
      -              "group_key": {
      -                "type": "string"
      -              },
      -              "grouped_by": {
      -                "type": "string"
      -              },
      -              "kind": {
      -                "type": "string"
      -              },
      -              "label": {
      -                "type": "string"
      -              },
      -              "max_projects_using": {
      -                "type": "integer"
      -              },
      -              "member_count": {
      -                "type": "integer"
      -              },
      -              "members": {
      -                "items": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "fqn": {
      -                      "type": "string"
      -                    },
      -                    "projects_using": {
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "fqn",
      -                    "projects_using"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": [
      -                  "null",
      -                  "array"
      -                ]
      -              },
      -              "members_with_callers": {
      -                "type": "integer"
      -              },
      -              "removal_in": {
      -                "type": "string"
      -              },
      -              "removal_kind": {
      -                "type": "string"
      -              },
      -              "subsystem": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "label",
      -              "grouped_by",
      -              "group_key",
      -              "change_record_nids",
      -              "member_count",
      -              "members_with_callers",
      -              "max_projects_using",
      -              "members"
      -            ],
      -            "type": "object"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "head_covers_all_callers": {
      -          "type": "boolean"
      -        },
      -        "internal_excluded": {
      -          "type": "integer"
      -        },
      -        "observed_removals": {
      -          "type": "integer"
      -        },
      -        "scheduled_removals": {
      -          "type": "integer"
      -        },
      -        "test_theme_excluded": {
      -          "type": "integer"
      -        },
      -        "with_contrib_callers": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "count",
      -        "internal_excluded",
      -        "test_theme_excluded",
      -        "with_contrib_callers",
      -        "group_count",
      -        "head_covers_all_callers",
      -        "head"
      -      ],
      -      "type": "object"
      -    },
      -    "from": {
      -      "type": "string"
      -    },
      -    "ranked_by": {
      -      "type": "string"
      -    },
      -    "removed": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "count": {
      -          "type": "integer"
      -        },
      -        "group_count": {
      -          "type": "integer"
      -        },
      -        "head": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "change_record_nids": {
      -                "items": {
      -                  "type": "integer"
      -                },
      -                "type": [
      -                  "null",
      -                  "array"
      -                ]
      -              },
      -              "deprecated_in": {
      -                "type": "string"
      -              },
      -              "group_key": {
      -                "type": "string"
      -              },
      -              "grouped_by": {
      -                "type": "string"
      -              },
      -              "kind": {
      -                "type": "string"
      -              },
      -              "label": {
      -                "type": "string"
      -              },
      -              "max_projects_using": {
      -                "type": "integer"
      -              },
      -              "member_count": {
      -                "type": "integer"
      -              },
      -              "members": {
      -                "items": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "fqn": {
      -                      "type": "string"
      -                    },
      -                    "projects_using": {
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "fqn",
      -                    "projects_using"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": [
      -                  "null",
      -                  "array"
      -                ]
      -              },
      -              "members_with_callers": {
      -                "type": "integer"
      -              },
      -              "removal_in": {
      -                "type": "string"
      -              },
      -              "removal_kind": {
      -                "type": "string"
      -              },
      -              "subsystem": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "label",
      -              "grouped_by",
      -              "group_key",
      -              "change_record_nids",
      -              "member_count",
      -              "members_with_callers",
      -              "max_projects_using",
      -              "members"
      -            ],
      -            "type": "object"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "head_covers_all_callers": {
      -          "type": "boolean"
      -        },
      -        "internal_excluded": {
      -          "type": "integer"
      -        },
      -        "observed_removals": {
      -          "type": "integer"
      -        },
      -        "scheduled_removals": {
      -          "type": "integer"
      -        },
      -        "test_theme_excluded": {
      -          "type": "integer"
      -        },
      -        "with_contrib_callers": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "count",
      -        "internal_excluded",
      -        "test_theme_excluded",
      -        "with_contrib_callers",
      -        "group_count",
      -        "head_covers_all_callers",
      -        "head"
      -      ],
      -      "type": "object"
      -    },
      -    "to": {
      -      "type": "string"
      -    },
      -    "unplaceable_symbols": {
      -      "type": "integer"
      -    },
      -    "usage_evidence_built_at": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "from",
      -    "to",
      -    "added",
      -    "deprecated",
      -    "removed",
      -    "ranked_by"
      -  ],
      -  "type": "object"
      -}New value: +null
  4. Changed9 schema fields changed
    • addedOutput schema / properties / added / properties / head / items / properties / removal_kind
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / added / properties / observed_removals
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / added / properties / scheduled_removals
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / removal_kind
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / deprecated / properties / observed_removals
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / deprecated / properties / scheduled_removals
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / removed / properties / head / items / properties / removal_kind
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / removed / properties / observed_removals
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / removed / properties / scheduled_removals
      Added value: +{
      +  "type": "integer"
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / usage_evidence_built_at
      Added value: +{
      +  "type": "string"
      +}
  6. Changed10 schema fields changed
    • changedInput schema / properties / min_projects_using / description
      Previous value: -"Drop symbols fewer than this many contrib development branches call. Set it to 1 to see only changes with a known caller."New value: +"Drop symbols fewer than this many contrib projects call on a development branch. Set it to 1 to see only changes with a known caller. Applies to the counts as well as the head, like kind."
    • addedOutput schema / properties / added / properties / test_theme_excluded
      Added value: +{
      +  "type": "integer"
      +}
    • changedOutput schema / properties / added / required
      Previous value: -[
      -  "count",
      -  "internal_excluded",
      -  "with_contrib_callers",
      -  "group_count",
      -  "head_covers_all_callers",
      -  "head"
      -]New value: +[
      +  "count",
      +  "internal_excluded",
      +  "test_theme_excluded",
      +  "with_contrib_callers",
      +  "group_count",
      +  "head_covers_all_callers",
      +  "head"
      +]
    • addedOutput schema / properties / bulk
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "attach": {
      +      "type": "string"
      +    },
      +    "sql": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "attach",
      +    "sql"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • addedOutput schema / properties / deprecated / properties / test_theme_excluded
      Added value: +{
      +  "type": "integer"
      +}
    • changedOutput schema / properties / deprecated / required
      Previous value: -[
      -  "count",
      -  "internal_excluded",
      -  "with_contrib_callers",
      -  "group_count",
      -  "head_covers_all_callers",
      -  "head"
      -]New value: +[
      +  "count",
      +  "internal_excluded",
      +  "test_theme_excluded",
      +  "with_contrib_callers",
      +  "group_count",
      +  "head_covers_all_callers",
      +  "head"
      +]
    • addedOutput schema / properties / ranked_by
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / removed / properties / test_theme_excluded
      Added value: +{
      +  "type": "integer"
      +}
    • changedOutput schema / properties / removed / required
      Previous value: -[
      -  "count",
      -  "internal_excluded",
      -  "with_contrib_callers",
      -  "group_count",
      -  "head_covers_all_callers",
      -  "head"
      -]New value: +[
      +  "count",
      +  "internal_excluded",
      +  "test_theme_excluded",
      +  "with_contrib_callers",
      +  "group_count",
      +  "head_covers_all_callers",
      +  "head"
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "from",
      -  "to",
      -  "added",
      -  "deprecated",
      -  "removed"
      -]New value: +[
      +  "from",
      +  "to",
      +  "added",
      +  "deprecated",
      +  "removed",
      +  "ranked_by"
      +]
  7. Changed41 schema fields changed
    • changedInput schema / properties / head / description
      Previous value: -"How many symbols to return per bucket. Defaults to 8, capped at 20. Prefer min_projects_using or kind over a bigger head: they change which 20 you get."New value: +"How many groups to return per bucket, 1 to 5 (the default). Narrow with kind or min_projects_using, or page with offset; those change which groups you get."
    • changedInput schema / properties / offset / description
      Previous value: -"Skip this many entries per bucket, in the same ranked order, to page past the head."New value: +"Skip this many groups per bucket, in the same ranked order, to page past the head."
    • addedOutput schema / properties / added / properties / group_count
      Added value: +{
      +  "type": "integer"
      +}
    • removedOutput schema / properties / added / properties / head / items / properties / fqn
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / added / properties / head / items / properties / group_key
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / added / properties / head / items / properties / grouped_by
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / added / properties / head / items / properties / label
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / added / properties / head / items / properties / max_projects_using
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / added / properties / head / items / properties / member_count
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / added / properties / head / items / properties / members
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "fqn": {
      +        "type": "string"
      +      },
      +      "projects_using": {
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "fqn",
      +      "projects_using"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / added / properties / head / items / properties / members_with_callers
      Added value: +{
      +  "type": "integer"
      +}
    • removedOutput schema / properties / added / properties / head / items / properties / projects_using
      Removed value: -{
      -  "type": "integer"
      -}
    • removedOutput schema / properties / added / properties / head / items / properties / replacement
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / added / properties / head / items / required
      Previous value: -[
      -  "fqn",
      -  "projects_using"
      -]New value: +[
      +  "label",
      +  "grouped_by",
      +  "group_key",
      +  "change_record_nids",
      +  "member_count",
      +  "members_with_callers",
      +  "max_projects_using",
      +  "members"
      +]
    • changedOutput schema / properties / added / required
      Previous value: -[
      -  "count",
      -  "internal_excluded",
      -  "with_contrib_callers",
      -  "head_covers_all_callers",
      -  "head"
      -]New value: +[
      +  "count",
      +  "internal_excluded",
      +  "with_contrib_callers",
      +  "group_count",
      +  "head_covers_all_callers",
      +  "head"
      +]
    • addedOutput schema / properties / deprecated / properties / group_count
      Added value: +{
      +  "type": "integer"
      +}
    • removedOutput schema / properties / deprecated / properties / head / items / properties / fqn
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / group_key
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / grouped_by
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / label
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / max_projects_using
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / member_count
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / members
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "fqn": {
      +        "type": "string"
      +      },
      +      "projects_using": {
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "fqn",
      +      "projects_using"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / members_with_callers
      Added value: +{
      +  "type": "integer"
      +}
    • removedOutput schema / properties / deprecated / properties / head / items / properties / projects_using
      Removed value: -{
      -  "type": "integer"
      -}
    • removedOutput schema / properties / deprecated / properties / head / items / properties / replacement
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / deprecated / properties / head / items / required
      Previous value: -[
      -  "fqn",
      -  "projects_using"
      -]New value: +[
      +  "label",
      +  "grouped_by",
      +  "group_key",
      +  "change_record_nids",
      +  "member_count",
      +  "members_with_callers",
      +  "max_projects_using",
      +  "members"
      +]
    • changedOutput schema / properties / deprecated / required
      Previous value: -[
      -  "count",
      -  "internal_excluded",
      -  "with_contrib_callers",
      -  "head_covers_all_callers",
      -  "head"
      -]New value: +[
      +  "count",
      +  "internal_excluded",
      +  "with_contrib_callers",
      +  "group_count",
      +  "head_covers_all_callers",
      +  "head"
      +]
    • addedOutput schema / properties / removed / properties / group_count
      Added value: +{
      +  "type": "integer"
      +}
    • removedOutput schema / properties / removed / properties / head / items / properties / fqn
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / removed / properties / head / items / properties / group_key
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / removed / properties / head / items / properties / grouped_by
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / removed / properties / head / items / properties / label
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / removed / properties / head / items / properties / max_projects_using
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / removed / properties / head / items / properties / member_count
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / removed / properties / head / items / properties / members
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "fqn": {
      +        "type": "string"
      +      },
      +      "projects_using": {
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "fqn",
      +      "projects_using"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / removed / properties / head / items / properties / members_with_callers
      Added value: +{
      +  "type": "integer"
      +}
    • removedOutput schema / properties / removed / properties / head / items / properties / projects_using
      Removed value: -{
      -  "type": "integer"
      -}
    • removedOutput schema / properties / removed / properties / head / items / properties / replacement
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / removed / properties / head / items / required
      Previous value: -[
      -  "fqn",
      -  "projects_using"
      -]New value: +[
      +  "label",
      +  "grouped_by",
      +  "group_key",
      +  "change_record_nids",
      +  "member_count",
      +  "members_with_callers",
      +  "max_projects_using",
      +  "members"
      +]
    • changedOutput schema / properties / removed / required
      Previous value: -[
      -  "count",
      -  "internal_excluded",
      -  "with_contrib_callers",
      -  "head_covers_all_callers",
      -  "head"
      -]New value: +[
      +  "count",
      +  "internal_excluded",
      +  "with_contrib_callers",
      +  "group_count",
      +  "head_covers_all_callers",
      +  "head"
      +]
  8. Changed23 schema fields changed
    • changedInput schema / properties / from / description
      Previous value: -"Lower core version bound, inclusive. Write it the way people say it: 11.2, 11.2.x, 11.2.0, 11, or 11.x. A bare major starts at its first minor."New value: +"Lower core version bound, inclusive — its own changes are included. To ask what an upgrade from 11.2 to 11.4 requires, pass from=11.3: 11.2 shipped before the site was on it. Write the version the way people say it: 11.2, 11.2.x, 11.2.0, 11, or 11.x. A bare major starts at its first minor."
    • changedInput schema / properties / head / description
      Previous value: -"How many symbols to return per bucket. Defaults to 8, capped at 20."New value: +"How many symbols to return per bucket. Defaults to 8, capped at 20. Prefer min_projects_using or kind over a bigger head: they change which 20 you get."
    • addedInput schema / properties / kind
      Added value: +{
      +  "description": "Restrict to one symbol kind: method, class, function, property, class_constant, interface, trait, hook, service, library, twig_template, constant, enum, module, theme. Applies to the counts as well as the head.",
      +  "type": "string"
      +}
    • addedInput schema / properties / min_projects_using
      Added value: +{
      +  "description": "Drop symbols fewer than this many contrib development branches call. Set it to 1 to see only changes with a known caller.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Skip this many entries per bucket, in the same ranked order, to page past the head.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / added / properties / head / items / properties / change_record_nids
      Added value: +{
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / added / properties / head / items / properties / deprecated_in
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / added / properties / head / items / properties / removal_in
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / added / properties / head_covers_all_callers
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / added / properties / with_contrib_callers
      Added value: +{
      +  "type": "integer"
      +}
    • changedOutput schema / properties / added / required
      Previous value: -[
      -  "count",
      -  "internal_excluded",
      -  "head"
      -]New value: +[
      +  "count",
      +  "internal_excluded",
      +  "with_contrib_callers",
      +  "head_covers_all_callers",
      +  "head"
      +]
    • addedOutput schema / properties / deprecated / properties / head / items / properties / change_record_nids
      Added value: +{
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / deprecated_in
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / deprecated / properties / head / items / properties / removal_in
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / deprecated / properties / head_covers_all_callers
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / deprecated / properties / with_contrib_callers
      Added value: +{
      +  "type": "integer"
      +}
    • changedOutput schema / properties / deprecated / required
      Previous value: -[
      -  "count",
      -  "internal_excluded",
      -  "head"
      -]New value: +[
      +  "count",
      +  "internal_excluded",
      +  "with_contrib_callers",
      +  "head_covers_all_callers",
      +  "head"
      +]
    • addedOutput schema / properties / removed / properties / head / items / properties / change_record_nids
      Added value: +{
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / removed / properties / head / items / properties / deprecated_in
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / removed / properties / head / items / properties / removal_in
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / removed / properties / head_covers_all_callers
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / removed / properties / with_contrib_callers
      Added value: +{
      +  "type": "integer"
      +}
    • changedOutput schema / properties / removed / required
      Previous value: -[
      -  "count",
      -  "internal_excluded",
      -  "head"
      -]New value: +[
      +  "count",
      +  "internal_excluded",
      +  "with_contrib_callers",
      +  "head_covers_all_callers",
      +  "head"
      +]
  9. First observed

TDQS

A5/5.0
Behavior5/5

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

Annotations already mark readOnly, idempotent, and non-destructive, and the description adds substantial behavioral detail: inclusive bounds, bucket independence, pagination edge cases, unplaceable symbols, removal_kind semantics, and how filters affect counts. No contradictions with annotations.

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

Conciseness5/5

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

The description is long but highly structured, with each bullet covering a distinct behavioral aspect of a complex 9-parameter tool. It is front-loaded with the core purpose and then organizes mode-specific details, filters, and usage constraints without significant redundancy.

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

Completeness5/5

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

For a tool with no output schema and 9 parameters, the description is exceptionally complete: it explains both output modes, row shapes, grouping rules, ranking, filtering, pagination, limits, data source, and special cases. An agent has nearly everything needed to call it correctly and interpret results.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds meaning well beyond the parameter descriptions: version form semantics, 'from=11.3' upgrade interpretation, flat-mode bucket requirements, limit page-size behavior, offset pagination, and when next_offset is absent. This materially improves correct parameter usage.

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 line states exactly what the tool does: answer what changed in the core API between two versions, listing added, deprecated, and removed symbols. It also explicitly distinguishes itself from related siblings: lookup_core_symbol for a single symbol and list_change_records for human write-ups.

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

Usage Guidelines5/5

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

The description gives clear usage context: contrib development branches only, from the evidence rollup. It also names alternatives with one-symbol lookup and human write-up routes, and explains when to choose flat vs grouped mode.

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.

TDQS

A4.6/5.0
Disambiguation4/5

Tools cluster into related families (change records, symbol usage, patch checks), but descriptions and cross-references clearly separate list vs detail vs diff operations. Some adjacent tools like lookup_core_symbol and list_symbol_users require careful reading, yet their purposes are distinct enough for an agent to select correctly.

Naming Consistency4/5

Most tools follow a clear snake_case verb_noun pattern: list_*, get_*, lookup_*, query_, scan_, search_, reroll_, describe_. A few names like project_profile, subsystem_coupling, and what_changed deviate from verb_noun but remain consistent in style and readable.

Tool Count4/5

At 16 tools, the set is slightly above the typical well-scoped range, but the domain is broad: patch lifecycle, composer scanning, symbol lookup, change records, project profiles, dataset queries, and code search. Each tool covers a distinct query surface, so none feels redundant.

Completeness5/5

The toolkit covers the full read-only analysis lifecycle: scanning composer constraints, checking and re-rolling patches, exploring datasets, looking up core symbols and their users, listing change records, profiling projects, and assessing upgrade readiness. No obvious dead ends or missing operations for its stated purpose.

Resources