[{"slug":"ZV-2026-0524","server_name":"testgraph.21dle.co.uk","severity":"breaking","title":"testgraph.21dle.co.uk: Field version_check was removed from affirm_subject_classification input; consumers still sending it may be rejected or silently ignored.","summary":"[risky] Description of affirm_subject_classification changed (33% word delta). [breaking] Field version_check was removed from affirm_subject_classification input; consumers still sending it may be rejected or silently ignored. [risky] Description of assert_location changed (36% word delta). [breaking] Field version_check was removed from assert_location input; consumers still sending it may be rejected or silently ignored. [risky] Description of claim_deliberation changed (46% word delta). [breaking] Field version_check was removed from claim_deliberation input; consumers still sending it may be rejected or silently ignored. [risky] Description of correct_subject_fact changed (29% word delta). [breaking] Field version_check was removed from correct_subject_fact input; consumers still sending it may be rejected or silently ignored. [safe] Description of create_deliberation changed (24% word delta). [breaking] Field version_check was removed from create_deliberation input; consumers still sending it may be rejected or silently ignored. [risky] Description of delete_experience changed (27% word delta). [breaking] Field version_check was removed from delete_experience input; consumers still sending it may be rejected or silently ignored. [safe] Description of enrich_subject changed (5% word delta). [breaking] Field version_check was removed from enrich_subject input; consumers still sending it may be rejected or silently ignored. [risky] Description of get_server_info changed (63% word delta). [safe] Description of propose_subject_reclassification changed (13% word delta). [breaking] Field version_check was removed from propose_subject_reclassification input; consumers still sending it may be rejected or silently ignored. [risky] Description of record_resolution changed (31% word delta). [breaking] Field version_check was removed from record_resolution input; consumers still sending it may be rejected or silently ignored. [risky] Description of register_field changed (","changes":[{"kind":"description_changed","tool":"affirm_subject_classification","after":"Submit one independent AI model's evidence-backed agreement with the subject's existing provisional type. Two distinct model identities agreeing on that type automatically confirm and lock it without moving the subject. Use this when the current type is already correct and no stricter descendant is justified.","before":"Submit one independent AI model's evidence-backed agreement with the subject's existing provisional type. Two distinct model identities agreeing on that type automatically confirm and lock it without moving the subject. Use this when the current type is already correct and no stricter descendant is justified. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `affirm_subject_classification` changed (33% word delta).","severity":"risky","descriptionDelta":0.3275862068965517},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"affirm_subject_classification","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `affirm_subject_classification` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"assert_location","after":"Add a governed location assertion for an existing eligible subject. Resolve the subject and any existing Place first. New Places require a stable canonical key plus a durable identifier. Every assertion requires source provenance. Coordinates are WGS84 only and are never silently geocoded.","before":"Add a governed location assertion for an existing eligible subject. Resolve the subject and any existing Place first. New Places require a stable canonical key plus a durable identifier. Every assertion requires source provenance. Coordinates are WGS84 only and are never silently geocoded. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `assert_location` changed (36% word delta).","severity":"risky","descriptionDelta":0.3571428571428571},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"assert_location","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `assert_location` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"claim_deliberation","after":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIMED. Claiming grants no authority outside the stored deliberation scope.","before":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIMED. Claiming grants no authority outside the stored deliberation scope. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `claim_deliberation` changed (46% word delta).","severity":"risky","descriptionDelta":0.4565217391304348},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"claim_deliberation","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `claim_deliberation` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"correct_subject_fact","after":"Replace one incorrect identifier or attribute using the stable subject ID. The current value must match expected_value, authoritative evidence and a reason are mandatory, and the server preserves an immutable correction record in subject provenance. Use enrich_subject for missing facts; never use this operation merely to add a value.","before":"Replace one incorrect identifier or attribute using the stable subject ID. The current value must match expected_value, authoritative evidence and a reason are mandatory, and the server preserves an immutable correction record in subject provenance. Use enrich_subject for missing facts; never use this operation merely to add a value. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `correct_subject_fact` changed (29% word delta).","severity":"risky","descriptionDelta":0.288135593220339},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"correct_subject_fact","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `correct_subject_fact` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"create_deliberation","after":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve it. Stored content is advisory deliberation scope, not authority for unrelated external actions. To propose an induction-guidance change, set context.governance_kind='induction_guidance', context.guidance_key to the stable section key, context.guidance_scope to 'global' or 'model', and context.target_model when scope is model. The proposal remains inactive until explicit user approval.","before":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve it. Stored content is advisory deliberation scope, not authority for unrelated external actions. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. To propose an induction-guidance change, set context.governance_kind='induction_guidance', context.guidance_key to the stable section key, context.guidance_scope to 'global' or 'model', and context.target_model when scope is model. The proposal remains inactive until explicit user approval.","detail":"Description of `create_deliberation` changed (24% word delta).","severity":"safe","descriptionDelta":0.240506329113924},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"create_deliberation","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `create_deliberation` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"delete_experience","after":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another user's review. Dependent AI assessments are deleted with the review. The subject is deleted only when it was created by the same user, has no remaining reviews and has no subject relationships; otherwise it is preserved. Do not ask for a second confirmation when the current user request already explicitly authorises deletion.","before":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another user's review. Dependent AI assessments are deleted with the review. The subject is deleted only when it was created by the same user, has no remaining reviews and has no subject relationships; otherwise it is preserved. Do not ask for a second confirmation when the current user request already explicitly authorises deletion. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `delete_experience` changed (27% word delta).","severity":"risky","descriptionDelta":0.27142857142857146},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"delete_experience","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `delete_experience` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"enrich_subject","after":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specific form. TestGraph supplies graph primitives and verification while you derive useful structure and reconcile evidence. Add missing identifiers, attributes, provenance and related unreviewed subjects to an existing subject without creating another review. Use this proactively when authoritative information was missed during the original save. Find only authoritative facts with plausible future TestGraph use: identity, likely queries, location, classification, relationships, comparison or verification. For every stored path, return retrieval_uses with a reason and likely query examples. Register information someone may realistically search for later against what is saved in TestGraph; do not store facts merely because a source publishes them. Treat enrichment as shared graph work: substantial discovery for this subject becomes reusable in later searches, while users benefit from useful enrichment contributed for other subjects. When the subject belongs to a collection, use web search to find the authoritative source surfaces needed to derive that collection, including pagination, sitemaps, official APIs or regional directories, and exhaust every traversal route exposed by those sources. Submit source_manifest mapping every member to its consulted source pages, then submit every discovered member as an unreviewed subject and connect it to the collection. Do not omit members because they are unreviewed, numerous or may be materialised later. Do not ask the user for routine lookup permission unless automatic lookup is unavailable or identity is genuinely ambiguous. Existing conflicting values are preserved rather than silently overwritten. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates. WORKFLOW: the server now owns the post-enrichment procedure. A successful response includes durable workflow state and the next required classification action. workflow.next_action names an exposed MCP tool; call it with workflow.next_action_arguments and follow workflow.next_action_instruction rather than reconstructing the procedure yourself.","before":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specific form. TestGraph supplies graph primitives and verification while you derive useful structure and reconcile evidence. Add missing identifiers, attributes, provenance and related unreviewed subjects to an existing subject without creating another review. Use this proactively when authoritative information was missed during the original save. Find only authoritative facts with plausible future TestGraph use: identity, likely queries, location, classification, relationships, comparison or verification. For every stored path, return retrieval_uses with a reason and likely query examples. Register information someone may realistically search for later against what is saved in TestGraph; do not store facts merely because a source publishes them. Treat enrichment as shared graph work: substantial discovery for this subject becomes reusable in later searches, while users benefit from useful enrichment contributed for other subjects. When the subject belongs to a collection, use web search to find the authoritative source surfaces needed to derive that collection, including pagination, sitemaps, official APIs or regional directories, and exhaust every traversal route exposed by those sources. Submit source_manifest mapping every member to its consulted source pages, then submit every discovered member as an unreviewed subject and connect it to the collection. Do not omit members because they are unreviewed, numerous or may be materialised later. Do not ask the user for routine lookup permission unless automatic lookup is unavailable or identity is genuinely ambiguous. Existing conflicting values are preserved rather than silently overwritten. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. WORKFLOW: the server now owns the post-enrichment procedure. A successful response includes durable workflow state and the next required classification action. workflow.next_action names an exposed MCP tool; call it with workflow.next_action_arguments and follow workflow.next_action_instruction rather than reconstructing the procedure yourself.","detail":"Description of `enrich_subject` changed (5% word delta).","severity":"safe","descriptionDelta":0.053497942386831254},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"enrich_subject","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `enrich_subject` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"get_server_info","after":"Return the exact TestGraph MCP server version and live deployment identity for diagnostics. Use this when checking a stale connection, endpoint mismatch or deployment issue; ordinary writes do not require a preceding version probe. Compare build_sha and deployment_id with the public /version endpoint when troubleshooting.","before":"Return the exact TestGraph MCP server version and live deployment identity. Call this immediately before any write operation and pass the returned write_version_token unchanged as version_check. A token from a different or older deployment is rejected before any write is attempted. Compare build_sha and deployment_id with the public /version endpoint when diagnosing stale MCP connections or endpoint mismatches.","detail":"Description of `get_server_info` changed (63% word delta).","severity":"risky","descriptionDelta":0.6271186440677966},{"kind":"description_changed","tool":"propose_subject_reclassification","after":"Submit one independent AI model's evidence-backed refinement to a strict descendant type. One model creates a candidate; agreement by two distinct models automatically moves the subject, confirms and locks it. A locked subject is not reopened by later opinions. Classification vocabulary should represent what a subject fundamentally is. Before creating, selecting, relating or proposing a subject type, identify the semantic head and descriptive modifiers. Material, arrangement/grouping, state/condition, quantity, colour, size, location and purpose/use normally belong in attributes or relationships rather than subject-type names. This is not a simplistic head-noun rule: a compound may remain a distinct type when the combined concept has materially different identity, behaviour, relationships, classification meaning or realistic retrieval needs. The server independently validates structural writes, so client guidance cannot bypass this rule.","before":"Submit one independent AI model's evidence-backed refinement to a strict descendant type. One model creates a candidate; agreement by two distinct models automatically moves the subject, confirms and locks it. A locked subject is not reopened by later opinions. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. Classification vocabulary should represent what a subject fundamentally is. Before creating, selecting, relating or proposing a subject type, identify the semantic head and descriptive modifiers. Material, arrangement/grouping, state/condition, quantity, colour, size, location and purpose/use normally belong in attributes or relationships rather than subject-type names. This is not a simplistic head-noun rule: a compound may remain a distinct type when the combined concept has materially different identity, behaviour, relationships, classification meaning or realistic retrieval needs. The server independently validates structural writes, so client guidance cannot bypass this rule.","detail":"Description of `propose_subject_reclassification` changed (13% word delta).","severity":"safe","descriptionDelta":0.13043478260869568},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"propose_subject_reclassification","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `propose_subject_reclassification` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"record_resolution","after":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and requires user_approved=true. For an induction-guidance deliberation, a successful user-approved resolution becomes active guidance returned by get_induction; AI votes alone have no activation authority.","before":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and requires user_approved=true. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. For an induction-guidance deliberation, a successful user-approved resolution becomes active guidance returned by get_induction; AI votes alone have no activation authority.","detail":"Description of `record_resolution` changed (31% word delta).","severity":"risky","descriptionDelta":0.30645161290322576},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"record_resolution","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `record_resolution` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"register_field","after":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an existing canonical field: a valid existing field is attached automatically on first use. Prefer raw_text for one-off narrative detail.","before":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an existing canonical field: a valid existing field is attached automatically on first use. Prefer raw_text for one-off narrative detail. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `register_field` changed (34% word delta).","severity":"risky","descriptionDelta":0.3448275862068966},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"register_field","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `register_field` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"register_subject_type_alias","after":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equivalence. Registering or using an equivalent alias does not require another AI to prefer the same name; disagreement about wording alone is not a semantic conflict.","before":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. Use this for genuine naming equivalence. Registering or using an equivalent alias does not require another AI to prefer the same name; disagreement about wording alone is not a semantic conflict.","detail":"Description of `register_subject_type_alias` changed (32% word delta).","severity":"risky","descriptionDelta":0.31666666666666665},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"register_subject_type_alias","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `register_subject_type_alias` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"reopen_subject_classification","after":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreement never reopens it.","before":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreement never reopens it. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `reopen_subject_classification` changed (49% word delta).","severity":"risky","descriptionDelta":0.4883720930232558},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"reopen_subject_classification","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `reopen_subject_classification` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"resolve_location_assertion","after":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval.","before":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `resolve_location_assertion` changed (50% word delta).","severity":"risky","descriptionDelta":0.5},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"resolve_location_assertion","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `resolve_location_assertion` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"resolve_subject_hierarchy","after":"Use after vocabulary_index when the specific subject type does not yet exist. Submit terms broad-to-specific, for example ['food','recipe']. The server reuses existing dictionary entries, creates only missing provisional nodes in context, adds belongs_to relationships and rejects cycles. Do not include 'review': review is the record type, not a subject category. Semantic placement must be based on meaning, never on which review arrived first. Before creating a new semantic node, distinguish a genuinely different concept from a mere naming variant. Naming variants should reuse identity; genuine meaning differences may remain separate. Classification vocabulary should represent what a subject fundamentally is. Before creating, selecting, relating or proposing a subject type, identify the semantic head and descriptive modifiers. Material, arrangement/grouping, state/condition, quantity, colour, size, location and purpose/use normally belong in attributes or relationships rather than subject-type names. This is not a simplistic head-noun rule: a compound may remain a distinct type when the combined concept has materially different identity, behaviour, relationships, classification meaning or realistic retrieval needs. The server independently validates structural writes, so client guidance cannot bypass this rule.","before":"Use after vocabulary_index when the specific subject type does not yet exist. Submit terms broad-to-specific, for example ['food','recipe']. The server reuses existing dictionary entries, creates only missing provisional nodes in context, adds belongs_to relationships and rejects cycles. Do not include 'review': review is the record type, not a subject category. Semantic placement must be based on meaning, never on which review arrived first. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. Before creating a new semantic node, distinguish a genuinely different concept from a mere naming variant. Naming variants should reuse identity; genuine meaning differences may remain separate. Classification vocabulary should represent what a subject fundamentally is. Before creating, selecting, relating or proposing a subject type, identify the semantic head and descriptive modifiers. Material, arrangement/grouping, state/condition, quantity, colour, size, location and purpose/use normally belong in attributes or relationships rather than subject-type names. This is not a simplistic head-noun rule: a compound may remain a distinct type when the combined concept has materially different identity, behaviour, relationships, classification meaning or realistic retrieval needs. The server independently validates structural writes, so client guidance cannot bypass this rule.","detail":"Description of `resolve_subject_hierarchy` changed (10% word delta).","severity":"safe","descriptionDelta":0.1048951048951049},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"resolve_subject_hierarchy","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `resolve_subject_hierarchy` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"retire_type_relationship","after":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI cannot silently recreate it.","before":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI cannot silently recreate it. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `retire_type_relationship` changed (41% word delta).","severity":"risky","descriptionDelta":0.4130434782608695},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"retire_type_relationship","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `retire_type_relationship` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"save_assessment","after":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates.","before":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `save_assessment` changed (23% word delta).","severity":"safe","descriptionDelta":0.22619047619047616},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"save_assessment","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `save_assessment` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"save_experience","after":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources when available. This applies to any kind of subject and does not require a website, location, address or relationship. Submit the result in subject_enrichment_check. Perform routine checking and retry automatically rather than asking the user. Ask the user only when the subject identity is genuinely ambiguous. Add useful discoveries in identifiers, subject_attributes and subject_context with source provenance, while attaching the review only to what was actually experienced. A completed check requires at least one source, and every source must be reconciled: list the request paths populated from it in applied_fields, or explain in unapplied_sources why it yielded no stored discovery. Every applied path must declare a generic retrieval_uses entry explaining how it helps future identity, likely queries, location, classification, relationships, comparison or verification. Treat enrichment as preparation for future TestGraph searches: register information someone may realistically search for later, and do not store facts merely because they are available. Treat this as shared graph building: substantial discovery work for this subject becomes reusable for later searches, while this user can benefit from useful enrichment contributed for other subjects. A subject's own canonical URL is a stable identifier and must be stored in identifiers when found. If enrichment cannot be found, use unavailable with a reason and the searches attempted. Use not_applicable with a reason when external enrichment has no sensible application. Collection assessment is mandatory: declare whether the subject belongs to a wider collection, and when it does, save the collection as subject_context with its authoritative directory URL and a relationship to reviewed_subject. On first discovery, submit every member exposed by a finite authoritative directory as an unreviewed subject and connect each one to the collection. The server stores that verified manifest. On later reviews, reuse the returned collection_id and manifest_revision; do not resubmit the full member list. The server still verifies that the reviewed subject belongs to the stored manifest. Verification status and real-world coverage status are separate: only coverage_status=complete permits reuse or conclusions that a location or member is absent. Partial or unknown manifests return a warning and require refresh. Location is optional; never invent facts or silently geocode coordinates. The experience date defaults to creation time unless experienced_at is explicit. All context subject types must already be resolved. Existing globally registered fields such as rating are automatically attached to this subject type on first valid use; preserve them in structured_data and do not ask for routine confirmation or discard them into raw_text. Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine. Derive useful structure from meaning and evidence instead of waiting for a domain-specific form; the server supplies stable primitives and verifies your claims. Register information someone may realistically search for later against what is saved in TestGraph. Treat enrichment as shared graph work whose cost is paid for this subject and whose useful result can be reused by later searches, just as users benefit from enrichment contributed for other subjects. Store only discoveries with a declared generic retrieval_uses purpose and likely-query examples; facts with no plausible future TestGraph use are not enrichment. For collections, do not stop at one landing page: discover the authoritative source surfaces needed to derive the complete collection and submit collection_assessment.source_manifest with complete traversal coverage and member-to-source mappings, discovery queries, exhaustion evidence and no unresolved source URLs. Every discovered collection member must be submitted. Include reviewed_subject plus every derived sibling in submitted_member_refs; the server requires it to equal discovered_count and verifies that every ref exists and is connected to the collection. unavailable is only for genuine collection-identity or authoritative-source failure and is rejected when collection evidence is known. Unreviewed status, collection size, effort, inconvenience, latency, quick-review scope and future materialisation are not omissions. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates.","before":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources when available. This applies to any kind of subject and does not require a website, location, address or relationship. Submit the result in subject_enrichment_check. Perform routine checking and retry automatically rather than asking the user. Ask the user only when the subject identity is genuinely ambiguous. Add useful discoveries in identifiers, subject_attributes and subject_context with source provenance, while attaching the review only to what was actually experienced. A completed check requires at least one source, and every source must be reconciled: list the request paths populated from it in applied_fields, or explain in unapplied_sources why it yielded no stored discovery. Every applied path must declare a generic retrieval_uses entry explaining how it helps future identity, likely queries, location, classification, relationships, comparison or verification. Treat enrichment as preparation for future TestGraph searches: register information someone may realistically search for later, and do not store facts merely because they are available. Treat this as shared graph building: substantial discovery work for this subject becomes reusable for later searches, while this user can benefit from useful enrichment contributed for other subjects. A subject's own canonical URL is a stable identifier and must be stored in identifiers when found. If enrichment cannot be found, use unavailable with a reason and the searches attempted. Use not_applicable with a reason when external enrichment has no sensible application. Collection assessment is mandatory: declare whether the subject belongs to a wider collection, and when it does, save the collection as subject_context with its authoritative directory URL and a relationship to reviewed_subject. On first discovery, submit every member exposed by a finite authoritative directory as an unreviewed subject and connect each one to the collection. The server stores that verified manifest. On later reviews, reuse the returned collection_id and manifest_revision; do not resubmit the full member list. The server still verifies that the reviewed subject belongs to the stored manifest. Verification status and real-world coverage status are separate: only coverage_status=complete permits reuse or conclusions that a location or member is absent. Partial or unknown manifests return a warning and require refresh. Location is optional; never invent facts or silently geocode coordinates. The experience date defaults to creation time unless experienced_at is explicit. All context subject types must already be resolved. Existing globally registered fields such as rating are automatically attached to this subject type on first valid use; preserve them in structured_data and do not ask for routine confirmation or discard them into raw_text. Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine. Derive useful structure from meaning and evidence instead of waiting for a domain-specific form; the server supplies stable primitives and verifies your claims. Register information someone may realistically search for later against what is saved in TestGraph. Treat enrichment as shared graph work whose cost is paid for this subject and whose useful result can be reused by later searches, just as users benefit from enrichment contributed for other subjects. Store only discoveries with a declared generic retrieval_uses purpose and likely-query examples; facts with no plausible future TestGraph use are not enrichment. For collections, do not stop at one landing page: discover the authoritative source surfaces needed to derive the complete collection and submit collection_assessment.source_manifest with complete traversal coverage and member-to-source mappings, discovery queries, exhaustion evidence and no unresolved source URLs. Every discovered collection member must be submitted. Include reviewed_subject plus every derived sibling in submitted_member_refs; the server requires it to equal discovered_count and verifies that every ref exists and is connected to the collection. unavailable is only for genuine collection-identity or authoritative-source failure and is rejected when collection evidence is known. Unreviewed status, collection size, effort, inconvenience, latency, quick-review scope and future materialisation are not omissions. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `save_experience` changed (4% word delta).","severity":"safe","descriptionDelta":0.0365168539325843},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"save_experience","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `save_experience` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"set_review_visibility","after":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibility result to translate conversational list numbers back to stable IDs. Setting public also ensures publication_status=published.","before":"Change one authenticated-user-owned review to private, unlisted, public or aggregate_only using its stable experience_id. Use a preceding list_reviews_by_visibility result to translate conversational list numbers back to stable IDs. Setting public also ensures publication_status=published. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `set_review_visibility` changed (38% word delta).","severity":"risky","descriptionDelta":0.3846153846153846},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"set_review_visibility","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `set_review_visibility` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"set_type_relationship","after":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_subject_hierarchy. Relationships improve broad search but never determine storage IDs. This is a semantic assertion, not a naming choice. If independent AIs materially disagree about the meaning of the edge, preserve the disagreement rather than treating alternate labels as proof of it. Classification vocabulary should represent what a subject fundamentally is. Before creating, selecting, relating or proposing a subject type, identify the semantic head and descriptive modifiers. Material, arrangement/grouping, state/condition, quantity, colour, size, location and purpose/use normally belong in attributes or relationships rather than subject-type names. This is not a simplistic head-noun rule: a compound may remain a distinct type when the combined concept has materially different identity, behaviour, relationships, classification meaning or realistic retrieval needs. The server independently validates structural writes, so client guidance cannot bypass this rule.","before":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_subject_hierarchy. Relationships improve broad search but never determine storage IDs. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. This is a semantic assertion, not a naming choice. If independent AIs materially disagree about the meaning of the edge, preserve the disagreement rather than treating alternate labels as proof of it. Classification vocabulary should represent what a subject fundamentally is. Before creating, selecting, relating or proposing a subject type, identify the semantic head and descriptive modifiers. Material, arrangement/grouping, state/condition, quantity, colour, size, location and purpose/use normally belong in attributes or relationships rather than subject-type names. This is not a simplistic head-noun rule: a compound may remain a distinct type when the combined concept has materially different identity, behaviour, relationships, classification meaning or realistic retrieval needs. The server independently validates structural writes, so client guidance cannot bypass this rule.","detail":"Description of `set_type_relationship` changed (11% word delta).","severity":"safe","descriptionDelta":0.10769230769230764},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"set_type_relationship","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `set_type_relationship` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"description_changed","tool":"submit_contribution","after":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reason. Preserve attribution and disagreement. Votes are advisory and never resolve a deliberation or activate guidance. The server independently checks machine-verifiable acceptance criteria and referenced review IDs.","before":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reason. Preserve attribution and disagreement. Votes are advisory and never resolve a deliberation or activate guidance. The server independently checks machine-verifiable acceptance criteria and referenced review IDs. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check.","detail":"Description of `submit_contribution` changed (25% word delta).","severity":"safe","descriptionDelta":0.24561403508771928},{"kind":"input_property_removed","path":"inputSchema.properties.version_check","tool":"submit_contribution","before":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"Field `version_check` was removed from `submit_contribution` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"}],"published_at":"2026-08-30T13:22:11.844Z"},{"slug":"ZV-2026-0474","server_name":"testgraph.21dle.co.uk","severity":"breaking","title":"testgraph.21dle.co.uk: New required field version_check on propose_subject_reclassification; requests without it will fail.","summary":"[safe] Description of enrich_subject changed (8% word delta). [risky] Description of propose_subject_reclassification changed (36% word delta). [breaking] New required field version_check on propose_subject_reclassification; requests without it will fail. [risky] Description of reopen_subject_classification changed (49% word delta). [breaking] New required field version_check on reopen_subject_classification; requests without it will fail.","changes":[{"kind":"description_changed","tool":"enrich_subject","after":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specific form. TestGraph supplies graph primitives and verification while you derive useful structure and reconcile evidence. Add missing identifiers, attributes, provenance and related unreviewed subjects to an existing subject without creating another review. Use this proactively when authoritative information was missed during the original save. Find only authoritative facts with plausible future TestGraph use: identity, likely queries, location, classification, relationships, comparison or verification. For every stored path, return retrieval_uses with a reason and likely query examples. Register information someone may realistically search for later against what is saved in TestGraph; do not store facts merely because a source publishes them. Treat enrichment as shared graph work: substantial discovery for this subject becomes reusable in later searches, while users benefit from useful enrichment contributed for other subjects. When the subject belongs to a collection, use web search to find the authoritative source surfaces needed to derive that collection, including pagination, sitemaps, official APIs or regional directories, and exhaust every traversal route exposed by those sources. Submit source_manifest mapping every member to its consulted source pages, then submit every discovered member as an unreviewed subject and connect it to the collection. Do not omit members because they are unreviewed, numerous or may be materialised later. Do not ask the user for routine lookup permission unless automatic lookup is unavailable or identity is genuinely ambiguous. Existing conflicting values are preserved rather than silently overwritten. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. CLASSIFICATION HAND-OFF: after any successful enrichment that changes the subject or its relationships, immediately call get_subject_classification. If the classification is not confirmed and the enriched evidence supports a more precise strict-descendant type, call propose_subject_reclassification with this model's stable identity, the reason and the enrichment evidence. Do not leave classification convergence pending merely because enrichment succeeded.","before":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specific form. TestGraph supplies graph primitives and verification while you derive useful structure and reconcile evidence. Add missing identifiers, attributes, provenance and related unreviewed subjects to an existing subject without creating another review. Use this proactively when authoritative information was missed during the original save. Find only authoritative facts with plausible future TestGraph use: identity, likely queries, location, classification, relationships, comparison or verification. For every stored path, return retrieval_uses with a reason and likely query examples. Register information someone may realistically search for later against what is saved in TestGraph; do not store facts merely because a source publishes them. Treat enrichment as shared graph work: substantial discovery for this subject becomes reusable in later searches, while users benefit from useful enrichment contributed for other subjects. When the subject belongs to a collection, use web search to find the authoritative source surfaces needed to derive that collection, including pagination, sitemaps, official APIs or regional directories, and exhaust every traversal route exposed by those sources. Submit source_manifest mapping every member to its consulted source pages, then submit every discovered member as an unreviewed subject and connect it to the collection. Do not omit members because they are unreviewed, numerous or may be materialised later. Do not ask the user for routine lookup permission unless automatic lookup is unavailable or identity is genuinely ambiguous. Existing conflicting values are preserved rather than silently overwritten. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","detail":"Description of `enrich_subject` changed (8% word delta).","severity":"safe","descriptionDelta":0.0826446280991735},{"kind":"description_changed","tool":"propose_subject_reclassification","after":"Submit one independent AI model's evidence-backed refinement to a strict descendant type. One model creates a candidate; agreement by two distinct models automatically moves the subject, confirms and locks it. A locked subject is not reopened by later opinions. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Submit one independent AI model's evidence-backed refinement to a strict descendant type. One model creates a candidate; agreement by two distinct models automatically moves the subject, confirms and locks it. A locked subject is not reopened by later opinions.","detail":"Description of `propose_subject_reclassification` changed (36% word delta).","severity":"risky","descriptionDelta":0.36363636363636365},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"propose_subject_reclassification","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `propose_subject_reclassification`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"reopen_subject_classification","after":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreement never reopens it. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Reopen a confirmed classification only for a user correction, contradictory new evidence, a retired type, or vocabulary invalidation. Ordinary later disagreement never reopens it.","detail":"Description of `reopen_subject_classification` changed (49% word delta).","severity":"risky","descriptionDelta":0.4883720930232558},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"reopen_subject_classification","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `reopen_subject_classification`; requests without it will fail.","severity":"breaking"}],"published_at":"2026-08-28T07:59:09.464Z"},{"slug":"ZV-2026-0433","server_name":"testgraph.21dle.co.uk","severity":"breaking","title":"testgraph.21dle.co.uk: New required field version_check on assert_location; requests without it will fail.","summary":"[risky] Description of assert_location changed (36% word delta). [breaking] New required field version_check on assert_location; requests without it will fail. [risky] Description of claim_deliberation changed (46% word delta). [breaking] New required field version_check on claim_deliberation; requests without it will fail. [risky] Description of correct_subject_fact changed (29% word delta). [breaking] New required field version_check on correct_subject_fact; requests without it will fail. [safe] Description of create_deliberation changed (24% word delta). [breaking] New required field version_check on create_deliberation; requests without it will fail. [risky] Description of delete_experience changed (27% word delta). [breaking] New required field version_check on delete_experience; requests without it will fail. [safe] Description of enrich_subject changed (7% word delta). [breaking] New required field version_check on enrich_subject; requests without it will fail. [risky] Description of get_server_info changed (51% word delta). [risky] Description of record_resolution changed (31% word delta). [breaking] New required field version_check on record_resolution; requests without it will fail. [risky] Description of register_field changed (34% word delta). [breaking] New required field version_check on register_field; requests without it will fail. [risky] Description of register_subject_type_alias changed (32% word delta). [breaking] New required field version_check on register_subject_type_alias; requests without it will fail. [risky] Description of resolve_location_assertion changed (50% word delta). [breaking] New required field version_check on resolve_location_assertion; requests without it will fail. [safe] Description of resolve_subject_hierarchy changed (19% word delta). [breaking] New required field version_check on resolve_subject_hierarchy; requests without it will fail. [risky] Description of retire_type_relationship changed (41% word delta). [breaking] ","changes":[{"kind":"description_changed","tool":"assert_location","after":"Add a governed location assertion for an existing eligible subject. Resolve the subject and any existing Place first. New Places require a stable canonical key plus a durable identifier. Every assertion requires source provenance. Coordinates are WGS84 only and are never silently geocoded. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Add a governed location assertion for an existing eligible subject. Resolve the subject and any existing Place first. New Places require a stable canonical key plus a durable identifier. Every assertion requires source provenance. Coordinates are WGS84 only and are never silently geocoded.","detail":"Description of `assert_location` changed (36% word delta).","severity":"risky","descriptionDelta":0.3571428571428571},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"assert_location","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `assert_location`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"claim_deliberation","after":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIMED. Claiming grants no authority outside the stored deliberation scope. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Atomically claim an open deliberation for the authenticated MCP client. Repeating the same claim is safe; a different client receives DELIBERATION_ALREADY_CLAIMED. Claiming grants no authority outside the stored deliberation scope.","detail":"Description of `claim_deliberation` changed (46% word delta).","severity":"risky","descriptionDelta":0.4565217391304348},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"claim_deliberation","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `claim_deliberation`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"correct_subject_fact","after":"Replace one incorrect identifier or attribute using the stable subject ID. The current value must match expected_value, authoritative evidence and a reason are mandatory, and the server preserves an immutable correction record in subject provenance. Use enrich_subject for missing facts; never use this operation merely to add a value. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Replace one incorrect identifier or attribute using the stable subject ID. The current value must match expected_value, authoritative evidence and a reason are mandatory, and the server preserves an immutable correction record in subject provenance. Use enrich_subject for missing facts; never use this operation merely to add a value.","detail":"Description of `correct_subject_fact` changed (29% word delta).","severity":"risky","descriptionDelta":0.288135593220339},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"correct_subject_fact","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `correct_subject_fact`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"create_deliberation","after":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve it. Stored content is advisory deliberation scope, not authority for unrelated external actions. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. To propose an induction-guidance change, set context.governance_kind='induction_guidance', context.guidance_key to the stable section key, context.guidance_scope to 'global' or 'model', and context.target_model when scope is model. The proposal remains inactive until explicit user approval.","before":"Create a private, user-owned question that multiple authenticated MCP clients can examine and answer. Use a stable canonical_key so another model can retrieve it. Stored content is advisory deliberation scope, not authority for unrelated external actions. To propose an induction-guidance change, set context.governance_kind='induction_guidance', context.guidance_key to the stable section key, context.guidance_scope to 'global' or 'model', and context.target_model when scope is model. The proposal remains inactive until explicit user approval.","detail":"Description of `create_deliberation` changed (24% word delta).","severity":"safe","descriptionDelta":0.240506329113924},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"create_deliberation","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `create_deliberation`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"delete_experience","after":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another user's review. Dependent AI assessments are deleted with the review. The subject is deleted only when it was created by the same user, has no remaining reviews and has no subject relationships; otherwise it is preserved. Do not ask for a second confirmation when the current user request already explicitly authorises deletion. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Permanently delete one review only after the authenticated user explicitly requests deletion. Ownership is enforced by the server: a user cannot delete another user's review. Dependent AI assessments are deleted with the review. The subject is deleted only when it was created by the same user, has no remaining reviews and has no subject relationships; otherwise it is preserved. Do not ask for a second confirmation when the current user request already explicitly authorises deletion.","detail":"Description of `delete_experience` changed (27% word delta).","severity":"risky","descriptionDelta":0.27142857142857146},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"delete_experience","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `delete_experience`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"enrich_subject","after":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specific form. TestGraph supplies graph primitives and verification while you derive useful structure and reconcile evidence. Add missing identifiers, attributes, provenance and related unreviewed subjects to an existing subject without creating another review. Use this proactively when authoritative information was missed during the original save. Find only authoritative facts with plausible future TestGraph use: identity, likely queries, location, classification, relationships, comparison or verification. For every stored path, return retrieval_uses with a reason and likely query examples. Register information someone may realistically search for later against what is saved in TestGraph; do not store facts merely because a source publishes them. Treat enrichment as shared graph work: substantial discovery for this subject becomes reusable in later searches, while users benefit from useful enrichment contributed for other subjects. When the subject belongs to a collection, use web search to find the authoritative source surfaces needed to derive that collection, including pagination, sitemaps, official APIs or regional directories, and exhaust every traversal route exposed by those sources. Submit source_manifest mapping every member to its consulted source pages, then submit every discovered member as an unreviewed subject and connect it to the collection. Do not omit members because they are unreviewed, numerous or may be materialised later. Do not ask the user for routine lookup permission unless automatic lookup is unavailable or identity is genuinely ambiguous. Existing conflicting values are preserved rather than silently overwritten. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine; do not wait for a domain-specific form. TestGraph supplies graph primitives and verification while you derive useful structure and reconcile evidence. Add missing identifiers, attributes, provenance and related unreviewed subjects to an existing subject without creating another review. Use this proactively when authoritative information was missed during the original save. Find only authoritative facts with plausible future TestGraph use: identity, likely queries, location, classification, relationships, comparison or verification. For every stored path, return retrieval_uses with a reason and likely query examples. Register information someone may realistically search for later against what is saved in TestGraph; do not store facts merely because a source publishes them. Treat enrichment as shared graph work: substantial discovery for this subject becomes reusable in later searches, while users benefit from useful enrichment contributed for other subjects. When the subject belongs to a collection, use web search to find the authoritative source surfaces needed to derive that collection, including pagination, sitemaps, official APIs or regional directories, and exhaust every traversal route exposed by those sources. Submit source_manifest mapping every member to its consulted source pages, then submit every discovered member as an unreviewed subject and connect it to the collection. Do not omit members because they are unreviewed, numerous or may be materialised later. Do not ask the user for routine lookup permission unless automatic lookup is unavailable or identity is genuinely ambiguous. Existing conflicting values are preserved rather than silently overwritten. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates.","detail":"Description of `enrich_subject` changed (7% word delta).","severity":"safe","descriptionDelta":0.06756756756756754},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"enrich_subject","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `enrich_subject`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"get_server_info","after":"Return the exact TestGraph MCP server version and live deployment identity. Call this immediately before any write operation and pass the returned write_version_token unchanged as version_check. A token from a different or older deployment is rejected before any write is attempted. Compare build_sha and deployment_id with the public /version endpoint when diagnosing stale MCP connections or endpoint mismatches.","before":"Return the exact TestGraph MCP server version and live deployment identity. Use this to diagnose stale MCP connections, endpoint mismatches or clients connected to a different deployment. Compare build_sha and deployment_id with the public /version endpoint.","detail":"Description of `get_server_info` changed (51% word delta).","severity":"risky","descriptionDelta":0.5102040816326531},{"kind":"description_changed","tool":"record_resolution","after":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and requires user_approved=true. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. For an induction-guidance deliberation, a successful user-approved resolution becomes active guidance returned by get_induction; AI votes alone have no activation authority.","before":"Close a deliberation with the user's explicit decision. This does not infer consensus: it records accepted contributions and remaining disagreement, and requires user_approved=true. For an induction-guidance deliberation, a successful user-approved resolution becomes active guidance returned by get_induction; AI votes alone have no activation authority.","detail":"Description of `record_resolution` changed (31% word delta).","severity":"risky","descriptionDelta":0.30645161290322576},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"record_resolution","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `record_resolution`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"register_field","after":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an existing canonical field: a valid existing field is attached automatically on first use. Prefer raw_text for one-off narrative detail. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Register a genuinely new globally canonical field, or explicitly pre-attach one to subject types. Do not ask the user for routine confirmation to reuse an existing canonical field: a valid existing field is attached automatically on first use. Prefer raw_text for one-off narrative detail.","detail":"Description of `register_field` changed (34% word delta).","severity":"risky","descriptionDelta":0.3448275862068966},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"register_field","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `register_field`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"register_subject_type_alias","after":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. Use this for genuine naming equivalence. Registering or using an equivalent alias does not require another AI to prefer the same name; disagreement about wording alone is not a semantic conflict.","before":"Map a genuinely equivalent expression to an existing stable subject type. Never use this to express a category relationship. Use this for genuine naming equivalence. Registering or using an equivalent alias does not require another AI to prefer the same name; disagreement about wording alone is not a semantic conflict.","detail":"Description of `register_subject_type_alias` changed (32% word delta).","severity":"risky","descriptionDelta":0.31666666666666665},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"register_subject_type_alias","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `register_subject_type_alias`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"resolve_location_assertion","after":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Accept or reject a contested location assertion. The submitting client cannot resolve its own contested claim without explicit user approval.","detail":"Description of `resolve_location_assertion` changed (50% word delta).","severity":"risky","descriptionDelta":0.5},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"resolve_location_assertion","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `resolve_location_assertion`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"resolve_subject_hierarchy","after":"Use after vocabulary_index when the specific subject type does not yet exist. Submit terms broad-to-specific, for example ['food','recipe']. The server reuses existing dictionary entries, creates only missing provisional nodes in context, adds belongs_to relationships and rejects cycles. Do not include 'review': review is the record type, not a subject category. Semantic placement must be based on meaning, never on which review arrived first. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. Before creating a new semantic node, distinguish a genuinely different concept from a mere naming variant. Naming variants should reuse identity; genuine meaning differences may remain separate.","before":"Use after vocabulary_index when the specific subject type does not yet exist. Submit terms broad-to-specific, for example ['food','recipe']. The server reuses existing dictionary entries, creates only missing provisional nodes in context, adds belongs_to relationships and rejects cycles. Do not include 'review': review is the record type, not a subject category. Semantic placement must be based on meaning, never on which review arrived first. Before creating a new semantic node, distinguish a genuinely different concept from a mere naming variant. Naming variants should reuse identity; genuine meaning differences may remain separate.","detail":"Description of `resolve_subject_hierarchy` changed (19% word delta).","severity":"safe","descriptionDelta":0.18947368421052635},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"resolve_subject_hierarchy","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `resolve_subject_hierarchy`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"retire_type_relationship","after":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI cannot silently recreate it. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Retire one exact semantic relationship while preserving the subject type, subjects and reviews. The retired edge remains as a rejection tombstone, so another AI cannot silently recreate it.","detail":"Description of `retire_type_relationship` changed (41% word delta).","severity":"risky","descriptionDelta":0.4130434782608695},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"retire_type_relationship","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `retire_type_relationship`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"save_assessment","after":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Save separately attributed AI analysis against the exact review it evaluates. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates.","detail":"Description of `save_assessment` changed (23% word delta).","severity":"safe","descriptionDelta":0.22619047619047616},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"save_assessment","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `save_assessment`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"save_experience","after":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources when available. This applies to any kind of subject and does not require a website, location, address or relationship. Submit the result in subject_enrichment_check. Perform routine checking and retry automatically rather than asking the user. Ask the user only when the subject identity is genuinely ambiguous. Add useful discoveries in identifiers, subject_attributes and subject_context with source provenance, while attaching the review only to what was actually experienced. A completed check requires at least one source, and every source must be reconciled: list the request paths populated from it in applied_fields, or explain in unapplied_sources why it yielded no stored discovery. Every applied path must declare a generic retrieval_uses entry explaining how it helps future identity, likely queries, location, classification, relationships, comparison or verification. Treat enrichment as preparation for future TestGraph searches: register information someone may realistically search for later, and do not store facts merely because they are available. Treat this as shared graph building: substantial discovery work for this subject becomes reusable for later searches, while this user can benefit from useful enrichment contributed for other subjects. A subject's own canonical URL is a stable identifier and must be stored in identifiers when found. If enrichment cannot be found, use unavailable with a reason and the searches attempted. Use not_applicable with a reason when external enrichment has no sensible application. Collection assessment is mandatory: declare whether the subject belongs to a wider collection, and when it does, save the collection as subject_context with its authoritative directory URL and a relationship to reviewed_subject. On first discovery, submit every member exposed by a finite authoritative directory as an unreviewed subject and connect each one to the collection. The server stores that verified manifest. On later reviews, reuse the returned collection_id and manifest_revision; do not resubmit the full member list. The server still verifies that the reviewed subject belongs to the stored manifest. Verification status and real-world coverage status are separate: only coverage_status=complete permits reuse or conclusions that a location or member is absent. Partial or unknown manifests return a warning and require refresh. Location is optional; never invent facts or silently geocode coordinates. The experience date defaults to creation time unless experienced_at is explicit. All context subject types must already be resolved. Existing globally registered fields such as rating are automatically attached to this subject type on first valid use; preserve them in structured_data and do not ask for routine confirmation or discard them into raw_text. Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine. Derive useful structure from meaning and evidence instead of waiting for a domain-specific form; the server supplies stable primitives and verifies your claims. Register information someone may realistically search for later against what is saved in TestGraph. Treat enrichment as shared graph work whose cost is paid for this subject and whose useful result can be reused by later searches, just as users benefit from enrichment contributed for other subjects. Store only discoveries with a declared generic retrieval_uses purpose and likely-query examples; facts with no plausible future TestGraph use are not enrichment. For collections, do not stop at one landing page: discover the authoritative source surfaces needed to derive the complete collection and submit collection_assessment.source_manifest with complete traversal coverage and member-to-source mappings, discovery queries, exhaustion evidence and no unresolved source URLs. Every discovered collection member must be submitted. Include reviewed_subject plus every derived sibling in submitted_member_refs; the server requires it to equal discovered_count and verifies that every ref exists and is connected to the collection. unavailable is only for genuine collection-identity or authoritative-source failure and is rejected when collection evidence is known. Unreviewed status, collection size, effort, inconvenience, latency, quick-review scope and future materialisation are not omissions. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes.","before":"Save a review against an already-resolved stable subject type. Before saving, perform a generic subject enrichment check using authoritative or primary sources when available. This applies to any kind of subject and does not require a website, location, address or relationship. Submit the result in subject_enrichment_check. Perform routine checking and retry automatically rather than asking the user. Ask the user only when the subject identity is genuinely ambiguous. Add useful discoveries in identifiers, subject_attributes and subject_context with source provenance, while attaching the review only to what was actually experienced. A completed check requires at least one source, and every source must be reconciled: list the request paths populated from it in applied_fields, or explain in unapplied_sources why it yielded no stored discovery. Every applied path must declare a generic retrieval_uses entry explaining how it helps future identity, likely queries, location, classification, relationships, comparison or verification. Treat enrichment as preparation for future TestGraph searches: register information someone may realistically search for later, and do not store facts merely because they are available. Treat this as shared graph building: substantial discovery work for this subject becomes reusable for later searches, while this user can benefit from useful enrichment contributed for other subjects. A subject's own canonical URL is a stable identifier and must be stored in identifiers when found. If enrichment cannot be found, use unavailable with a reason and the searches attempted. Use not_applicable with a reason when external enrichment has no sensible application. Collection assessment is mandatory: declare whether the subject belongs to a wider collection, and when it does, save the collection as subject_context with its authoritative directory URL and a relationship to reviewed_subject. On first discovery, submit every member exposed by a finite authoritative directory as an unreviewed subject and connect each one to the collection. The server stores that verified manifest. On later reviews, reuse the returned collection_id and manifest_revision; do not resubmit the full member list. The server still verifies that the reviewed subject belongs to the stored manifest. Verification status and real-world coverage status are separate: only coverage_status=complete permits reuse or conclusions that a location or member is absent. Partial or unknown manifests return a warning and require refresh. Location is optional; never invent facts or silently geocode coordinates. The experience date defaults to creation time unless experienced_at is explicit. All context subject types must already be resolved. Existing globally registered fields such as rating are automatically attached to this subject type on first valid use; preserve them in structured_data and do not ask for routine confirmation or discard them into raw_text. Use your full available reasoning, web retrieval and tool capabilities as TestGraph's open-ended semantic and discovery engine. Derive useful structure from meaning and evidence instead of waiting for a domain-specific form; the server supplies stable primitives and verifies your claims. Register information someone may realistically search for later against what is saved in TestGraph. Treat enrichment as shared graph work whose cost is paid for this subject and whose useful result can be reused by later searches, just as users benefit from enrichment contributed for other subjects. Store only discoveries with a declared generic retrieval_uses purpose and likely-query examples; facts with no plausible future TestGraph use are not enrichment. For collections, do not stop at one landing page: discover the authoritative source surfaces needed to derive the complete collection and submit collection_assessment.source_manifest with complete traversal coverage and member-to-source mappings, discovery queries, exhaustion evidence and no unresolved source URLs. Every discovered collection member must be submitted. Include reviewed_subject plus every derived sibling in submitted_member_refs; the server requires it to equal discovered_count and verifies that every ref exists and is connected to the collection. unavailable is only for genuine collection-identity or authoritative-source failure and is rejected when collection evidence is known. Unreviewed status, collection size, effort, inconvenience, latency, quick-review scope and future materialisation are not omissions. When the client supports concurrent tool calls, submit independent writes concurrently in batches of up to 10. Do not batch dependent operations until their prerequisites are confirmed. Reuse the same canonical key for the same subject and derive deterministic idempotency keys from a stable run identifier, target and operation so retries and restarted conversations safely return existing writes instead of creating duplicates.","detail":"Description of `save_experience` changed (4% word delta).","severity":"safe","descriptionDelta":0.0365168539325843},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"save_experience","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `save_experience`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"set_type_relationship","after":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_subject_hierarchy. Relationships improve broad search but never determine storage IDs. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check. The server blocks stale or unchecked writes. This is a semantic assertion, not a naming choice. If independent AIs materially disagree about the meaning of the edge, preserve the disagreement rather than treating alternate labels as proof of it.","before":"Add editable classification metadata between existing subject types, such as ferry belongs_to transportation. Unknown types must first be resolved with resolve_subject_hierarchy. Relationships improve broad search but never determine storage IDs. This is a semantic assertion, not a naming choice. If independent AIs materially disagree about the meaning of the edge, preserve the disagreement rather than treating alternate labels as proof of it.","detail":"Description of `set_type_relationship` changed (25% word delta).","severity":"risky","descriptionDelta":0.2533333333333333},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"set_type_relationship","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `set_type_relationship`; requests without it will fail.","severity":"breaking"},{"kind":"description_changed","tool":"submit_contribution","after":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reason. Preserve attribution and disagreement. Votes are advisory and never resolve a deliberation or activate guidance. The server independently checks machine-verifiable acceptance criteria and referenced review IDs. VERSION SAFETY: immediately before calling this write, call get_server_info and pass its write_version_token as version_check.","before":"Add an immutable proposal, critique, counterproposal, reconciliation or vote. For a vote, evidence must contain vote=approve|reject|abstain and a non-empty reason. Preserve attribution and disagreement. Votes are advisory and never resolve a deliberation or activate guidance. The server independently checks machine-verifiable acceptance criteria and referenced review IDs.","detail":"Description of `submit_contribution` changed (25% word delta).","severity":"safe","descriptionDelta":0.24561403508771928},{"kind":"input_required_added","path":"inputSchema.properties.version_check","tool":"submit_contribution","after":{"type":"string","maxLength":64,"minLength":64,"description":"Required live deployment token. Call get_server_info immediately before this write and pass write_version_token unchanged. Stale or missing tokens are rejected before any write occurs."},"detail":"New required field `version_check` on `submit_contribution`; requests without it will fail.","severity":"breaking"}],"published_at":"2026-08-26T19:11:53.686Z"}]