{"record":{"id":"7f0d5c5a30ca137a","repo":"PrefectHQ/fastmcp","slug":"cannot-specify-required-true-with-default-or","errorCode":null,"errorMessage":"Cannot specify 'required=True' with 'default' or 'default_factory'. Required parameters cannot have defaults.","messagePattern":"Cannot specify 'required=True' with 'default' or 'default_factory'\\. Required parameters cannot have defaults\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"fastmcp_slim/fastmcp/tools/tool_transform.py","lineNumber":201,"sourceCode":"        \"\"\"Validate that only one of default or default_factory is provided.\"\"\"\n        has_default = self.default is not NotSet\n        has_factory = self.default_factory is not NotSet\n\n        if has_default and has_factory:\n            raise ValueError(\n                \"Cannot specify both 'default' and 'default_factory' in ArgTransform. \"\n                \"Use either 'default' for a static value or 'default_factory' for a callable.\"\n            )\n\n        if has_factory and not self.hide:\n            raise ValueError(\n                \"default_factory can only be used with hide=True. \"\n                \"Visible parameters must use static 'default' values since JSON schema \"\n                \"cannot represent dynamic factories.\"\n            )\n\n        if self.required is True and (has_default or has_factory):\n            raise ValueError(\n                \"Cannot specify 'required=True' with 'default' or 'default_factory'. \"\n                \"Required parameters cannot have defaults.\"\n            )\n\n        if self.hide and self.required is True:\n            raise ValueError(\n                \"Cannot specify both 'hide=True' and 'required=True'. \"\n                \"Hidden parameters cannot be required since clients cannot provide them.\"\n            )\n\n        if self.required is False:\n            raise ValueError(\n                \"Cannot specify 'required=False'. Set a default value instead.\"\n            )\n\n\nclass ArgTransformConfig(FastMCPBaseModel):\n    \"\"\"A model for requesting a single argument transform.\"\"\"","sourceCodeStart":183,"sourceCodeEnd":219,"githubUrl":"https://github.com/PrefectHQ/fastmcp/blob/1f021142978e0861cd910c8df4e8074bc7cf3978/fastmcp_slim/fastmcp/tools/tool_transform.py#L183-L219","documentation":"ArgTransform rejects required=True combined with a default or default_factory, since a required parameter by definition must be supplied and cannot have a default. __post_init__ raises ValueError for this contradictory configuration.","triggerScenarios":"ArgTransform(required=True, default=...) or ArgTransform(required=True, default_factory=...).","commonSituations":"Trying to mark a parameter mandatory while also giving it a fallback value; merging parameter metadata where requiredness and defaults come from different sources.","solutions":["Drop required=True if the parameter should fall back to the default.","Drop default/default_factory if the parameter must be required.","If defaults come from shared config, strip them when setting required=True."],"exampleFix":"// before\nArgTransform(required=True, default=\"x\")\n\n// after\nArgTransform(required=True)","handlingStrategy":"validation","validationCode":"def check_required_default(t: ArgTransform) -> None:\n    if t.required is True and (t.default is not NotSet or t.default_factory is not NotSet):\n        raise ValueError(\"required=True cannot coexist with a default\")","typeGuard":null,"tryCatchPattern":"try:\n    t = ArgTransform(required=True, default=\"x\")\nexcept ValueError:\n    t = ArgTransform(default=\"x\")  # default implies optional","preventionTips":["Treat required=True as exclusive: no defaults allowed.","If a fallback exists, the param is optional by definition — drop required=True.","Never copy a required flag from schema-style configs into ArgTransform blindly."],"tags":["python","tool-transform","validation"],"backgroundTag":"mutually-exclusive-parameters","analyzedSha":"1f021142978e0861cd910c8df4e8074bc7cf3978","analyzedAt":"2026-08-29T14:31:16.082Z","schemaVersion":2},"datasetVersion":"2026-08-29T17:17:51.833Z"}