- a
Paginationnames fields the schema actually accepts, only endpoints that page declare one, and a walk over it terminates; - no
model_validatoris lost on the way to the LLM view, so aoneofis enforced against the model’s input and not only against the wire; - failure detection is an
Envelopeon the factory and never logic inside a response handler, where the first tool added without one reports a failed write as a success; - Google packs send query parameters under the camelCase names Google documents, because Calendar, Gmail and Drive answer 200 to a name they do not recognise and ignore it;
- a
static_body,static_queryorstatic_headersconstant is never also reachable as a tool argument; - a
Glossreaches the model’s schema and never the documented description, so the vendor’s own text stays comparable to their reference page; - a
PATCHbody mandates nothing, so a partial update cannot demand a field it is not changing. - every model a pack declares is a
PackModel, built the first time it is used rather than when the pack is imported, so a server pays for the tools it serves and not for the rest. - tools that offer alternative scopes agree on which is narrower, within a pack and across all of them, so
scopes_forcan always pick the narrowest set and that set meets every tool’s requirements, under every kind of credential the pack declares; - every tool answers for every kind of credential its pack declares, with requirements or with
Unavailable, and the pack agrees on which kind a plain list means.
Checking the checks
A check that reads a declaration and compares it to itself passes forever and protects nothing. So each one is also run against a pack broken on purpose, in the specific way the bug it guards against broke it — twenty-four mutations intests/test_conformance_is_not_vacuous.py, each restored afterwards.
One check was vacuous until that file caught it.
What conformance cannot tell you
Whether a schema still matches the vendor’s live API. That is drift, and it needs the published spec rather than introspection. It is on the roadmap. Until thenscripts/live_google_check.py is the shape such a check takes — deliberately not a test, because the suite is offline by rule.