Skyvern-AI / Skyvern-AI/rustwright

[Bug]: Rustwright-MCP function calls not accepted by OpenCode + Google Gemini provider

Open
#262 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Python
Stars
890
Forks
58
Avg merge
20h 29m
Merged PRs (30d)
12

Description

What happened?

When I try to use rustwright-mcp in OpenCode, with Google Gemini 3.8 Flash via Vertex AI, I get this error:

Unable to submit request because rustwright_browser_file_upload functionDeclaration parameters.paths schema specified other fields alongside any_of. When using any_of, it must be the only field set. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling

Reproduction

  • Install OpenCode
  • Configure OpenCode to use Google Gemini 3.8 Flash provider / model
  • Install Rustwright-mcp binary
  • Configure OpenCode MCPs to use rustwright-mcp
  • Send a prompt: "testing"

Configure Rustwright MCP:

  "mcp": {
    "rustwright": {
      "command": ["rustwright-mcp"],
      "type": "local"
    }
  },

Configure Google Gemini Vertex AI in OpenCode:

  "provider": {
    "google-vertex": {
      "options": {
        "project": "gen-lang-client-0698545845",
        "location": "global"
      }
    },
  }

Expected behavior

The rustwright-mcp server should "play nice" with the Google Gemini 3.8 Flash model's function call requirements. I am not sure if this is an implementation issue with Rustwright or how OpenCode is exposing MCP function calls to the Gemini provider layer.

Environment

  • OS: MacOS
  • Python version:
  • Rust version:
  • Node version, if relevant:
  • Browser:
  • Rustwright commit: Built from feature branch

Logs

OpenCode debug logs:

timestamp=2026-09-11T03:17:30.115Z level=ERROR run=48a27ada message="stream error" providerID=google-vertex modelID=gemini-3.8-flash session.id=xxxx small=false agent=build mode=primary error.error="AI_APICallError: Unable to submit request because rustwright_browser_file_upload functionDeclaration parameters.paths schema specified other fields alongside any_of. When using any_of, it must be the only field set. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling"
timestamp=2026-09-11T03:17:30.117Z level=ERROR run=48a27ada message=process session.id=xxxx messageID=xxxx error="Unable to submit request because rustwright_browser_file_upload functionDeclaration parameters.paths schema specified other fields alongside any_of. When using any_of, it must be the only field set. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling" stack="AI_APICallError: Unable to submit request because rustwright_browser_file_upload functionDeclaration parameters.paths schema specified other fields alongside any_of. When using any_of, it must be the only field set. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling\n at (/$bunfs/root/chunk-rzxvyn1n.js:6:14509)\n at async (/$bunfs/root/chunk-rzxvyn1n.js:6:12638)\n at processTicksAndRejections (native:7:39)"

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 with the rustwright_browser_file_upload function declaration and its parameters.paths schema, then compare the emitted schema with Vertex AI's function-calling requirements in the linked documentation. Reproduce through the listed OpenCode Google Vertex configuration; done means the testing prompt is accepted without the any_of schema error.

Written by the indexing model from the issue text.

Assessment

Tech stack
google-cloud, python, rust
Domain
api, backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.