HKUDS/Vibe-Trading · error · ValueError
unsupported scheduled_research action {action!r}
Error message
unsupported scheduled_research action {action!r} What it means
The scheduled_research tool dispatches on an `action` kwarg and only supports a fixed set of actions (e.g. propose_create, propose_cancel). Any other action string reaches the else branch and raises ValueError naming the unsupported action. This guards the tool's internal action router.
Source
Thrown at agent/src/tools/scheduled_research_tool.py:126
job_id = str(kwargs.get("job_id") or "").strip()
job = default_store().get(job_id)
if job is None:
raise ValueError(f"scheduled research job {job_id!r} was not found")
payload = public_job(job)
elif action == "list_playbooks":
payload = {"playbooks": [item.to_dict() for item in list_playbooks()]}
elif action == "propose_create":
draft = kwargs.get("draft")
if not isinstance(draft, dict):
raise ValueError("draft is required for propose_create")
payload = propose_create(draft, session_id=session_id)
elif action == "propose_cancel":
job_id = str(kwargs.get("job_id") or "").strip()
if not job_id:
raise ValueError("job_id is required for propose_cancel")
payload = propose_cancel(job_id, session_id=session_id)
else:
raise ValueError(f"unsupported scheduled_research action {action!r}")
return json.dumps(payload, ensure_ascii=False)
View on GitHub (pinned to 80ffdda44c)
Solutions
- Check the tool's source/spec for the supported action list and use one of them exactly (e.g. "propose_create" or "propose_cancel")
- If you need a missing capability (e.g. reschedule), check for a newer version of the tool or file a feature request
- Fix typos and casing in the action kwarg
Example fix
# before tool.execute(action="cancel", job_id="job-1") # after tool.execute(action="propose_cancel", job_id="job-1")
Defensive patterns
Strategy: validation
Validate before calling
SUPPORTED = {"propose_create", "propose_cancel"} # keep in sync with the tool
if action not in SUPPORTED:
raise ValueError(f"unsupported action {action!r}; choose from {sorted(SUPPORTED)}")
tool.execute(action=action, **kwargs) Try / catch
catch ValueError and surface the message (it names the bad action) back to the agent/user for correction
Prevention
- Keep a constant list of valid actions derived from the tool schema
- Validate the action string before calling execute
When it happens
Trigger: Calling scheduled_research tool with action="delete" / action="propose_update" / any string other than the supported actions, or with a typo like "propose_cancell".
Common situations: Agent prompt drift where the LLM invents an action name; API/schema changes that added new actions not supported by the installed version; case mismatches like "Propose_Cancel" (matching is exact).
Related errors
- job_id is required for propose_cancel
- timezone {tz!r} is not a recognized IANA timezone key
- 'delivery' must be an object or null
- unknown delivery status {raw_status!r}
- 'delivery.{name}' must be a string or null
AI-assisted analysis of HKUDS/Vibe-Trading@80ffdda44c (2026-08-28).
Data as JSON: /api/errors/078afc997a06ace9.
Report an issue: GitHub.