Question 110
A support model sends a phone number to `get_customer_record`, but the service accepts only an authenticated account UUID and must never search arbitrary phone numbers. What contract change would best prevent this call?
Explanation
Correct Answer
A typed input contract should communicate both the UUID shape and the trust condition that the identifier belongs to the authenticated session. The tool description can state explicitly that phone numbers and display names are not accepted inputs. Runtime schema checks and backend authorization must enforce those limits even if the model chooses a wrong value. This is stronger than relying solely on a prompt because it makes misuse visible and blocks unsafe lookup attempts.
Incorrect Answers
An unconstrained string hides the difference between an account UUID and a contact detail. It can encourage enumeration or an unverified account lookup the service is explicitly designed to prevent. The contract should narrow rather than expand accepted identifiers. The trusted account UUID should come from authentication context.
UUIDs cannot be safely inferred from arbitrary telephone digits, and guessing does not establish account ownership. A fabricated identifier could point to a different record or fail silently. The application should supply a trusted bound identifier after actual verification. Real ownership proof cannot be replaced by a generated guess.
A better name may help initial selection but cannot stop invalid phone-number arguments. The defect concerns an unsupported and untrusted identifier type. Required format constraints, validation, and authorization at the tool boundary are needed. The backend must enforce exact account-ID requirements and identity binding.