OpenHands / OpenHands/software-agent-sdk

[Bug]: Missing GitHub MCP inputSchema causes inconsistent task status between the task list and automation page

Open
#4,705 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

automation bug mcp priority:medium
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
  1. Configure the GitHub MCP integration in Agent Canvas.
  2. Run an automation that uses GitHub MCP tools.
  3. Open the task log view.
  4. Observe ws_event_processing_error and multiple inputSchema Field required errors.
  5. 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
Image Image Task status mismatch

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.