Skip to content

Consolidated method-dispatch tools return unhelpful "unknown method" errors (don't list supported methods) #2712

@gustavo-sec

Description

@gustavo-sec

Describe the bug

The consolidated tools that dispatch on a method argument return a bare unknown method: when the method is unrecognized, without listing the valid methods. labels.go already does the helpful thing ("... Supported methods are: create, update, delete"); the other method-dispatch tools don't, so the behavior is inconsistent.

Separately, pull_request_review_write decodes arguments with mapstructure.WeakDecode (it does not use RequiredParam like the other tools), so omitting the required method produces "unknown method: " with an empty value — instead of telling the caller that method is required.

Affected tools: pull_request_read, pull_request_review_write, issue_read, sub-issue write, actions (list/get/run), projects (list/get/write), ui_get.

Affected version

Version: v1.3.0
Commit: 3422703
Build Date: 2026-06-11T14:16:55Z

Steps to reproduce the behavior

  1. Call pull_request_review_write with the required method omitted, e.g. { "owner": "o", "repo": "r", "pullNumber": 42 }.
  2. View the output.
  3. Server returns (tool-result error, HTTP 200 isError):

unknown method:
(empty after the colon — method was never supplied, but the error doesn't say it's required or what the valid values are).

Or, with an unrecognized value { "method": "bogus", ... }:

unknown method: bogus
No list of supported methods. The same bare error occurs on pull_request_read, issue_read, actions_, projects_, and ui_get for any unrecognized method.

Expected vs actual behavior

Expected: the error names the supported methods (matching labels.go, e.g. unknown method: bogus. Supported methods are: create, submit_pending, delete_pending, resolve_thread, unresolve_thread), and an omitted required method reports method is required. Supported methods are: ....

Actual: a bare unknown method: with no guidance; for pull_request_review_write an omitted method yields unknown method: (empty), which reads like a routing bug rather than a missing required argument.

Logs
Tool-result error text returned by the server:

unknown method:
unknown method: bogus

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions