OpenHands / OpenHands/software-agent-sdk
[Bug]: Missing GitHub MCP inputSchema causes inconsistent task status between the task list and automation page
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.1k
- Forks
- 539
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 137
Description
Is there an existing issue for the same bug?
- I have searched existing issues and this is not a duplicate.
Bug Description
When an Agent Canvas automation uses GitHub MCP tools, the log view reports 44 validation errors because every GitHub MCP tool is missing the required inputSchema field.
The task is displayed or recorded as failed, but execution continues: the repository is cloned successfully, the run request returns 200 OK, and streaming events continue afterward.
Expected Behavior
GitHub MCP tools should retain inputSchema in WebSocket events.
When an automation uses GitHub MCP tools, inputSchema is missing from the log events and triggers validation errors. However, the task still executes successfully.
The task list shows the run as successful, while the automation page shows it as failed, resulting in inconsistent status reporting.
Actual Behavior
RemoteConversation fails while validating the event:
pydantic_core.ValidationError: 44 validation errors for Event
tools.6.mcp_tool.inputSchema
Field required [type=missing]
...
tools.49.mcp_tool.inputSchema
Field required [type=missing]
The task still starts successfully:
run() triggered successfully: <Response [200 OK]>
It continues executing and producing StreamingDeltaEvent events.
Steps to Reproduce
- Configure the GitHub MCP integration in Agent Canvas.
- Run an automation that uses GitHub MCP tools.
- Open the task log view.
- Observe
ws_event_processing_errorand multipleinputSchema Field requirederrors. - Observe that the task continues executing in the background.
Acceptance Criteria
No response
Installation Method
No response
If you selected "Other", please specify
No response
SDK Version
No response
Version Confirmation
- I have confirmed this bug exists on the LATEST version of OpenHands SDK
Python Version
No response
Model Name (if applicable)
gpt-5.6-luna
Operating System
Linux
Logs and Error Messages
alidationError: 44 validation errors for Event
tools.6.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'add_comment_to_...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.7.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'add_issue_comme...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.8.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'add_reply_to_pu...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.9.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'create_branch',...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.10.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'create_or_updat...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.11.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'create_pull_req...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.12.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'create_reposito...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.13.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'delete_file', '...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.14.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'fork_repository...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.15.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'get_commit', 'd...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.16.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'get_file_conten...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.17.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'get_label', 'de...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.18.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'get_latest_rele...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.19.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'get_me', 'descr...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.20.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'get_release_by_...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.21.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'get_tag', 'desc...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.22.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'get_team_member...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.23.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'get_teams', 'de...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.24.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'issue_read', 'd...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.25.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'issue_write', '...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.26.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'list_branches',...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.27.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'list_commits', ...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.28.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'list_issue_fiel...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.29.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'list_issue_type...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.30.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'list_issues', '...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.31.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'list_pull_reque...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.32.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'list_releases',...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.33.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'list_repository...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.34.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'list_tags', 'de...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.35.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'merge_pull_requ...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.36.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'pull_request_re...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.37.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'pull_request_re...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.38.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'push_files', 'd...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.39.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'request_copilot...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.40.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'run_secret_scan...pen_world_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.41.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'search_code', '...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.42.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'search_commits'...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.43.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'search_issues',...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.44.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'search_pull_req...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.45.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'search_reposito...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.46.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'search_users', ...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.47.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'sub_issue_write...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.48.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'update_pull_req...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
tools.49.mcp_tool.inputSchema
Field required [type=missing, input_value={'name': 'update_pull_req...dempotent_hint': False}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing [kind=unknown, source=environment]
Minimal Code Sample
No response
Screenshots and Additional Context
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the RemoteConversation and Event validation models, then trace WebSocket event handling and StreamingDeltaEvent processing for GitHub MCP tools. Reproduce the automation and confirm that inputSchema is present in events, validation errors are absent, and task status remains consistent between the task list and automation page.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github, python
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 50/100