{
  "isError" : false,
  "request" : {
    "tool" : "extract a statement range into a new pure function with explicit parameters and return, then replace the block with a call"
  },
  "response" : {
    "candidates" : [ {
      "description" : "Inserts the new method (parameters and return inferred from variable data-flow) and replaces the block with a call to it; answers status, edits[] and summary, an ambiguous or boundary-crossing block as conflicts[].",
      "name" : "ek9_extract_method",
      "score" : 17.848139287413737
    }, {
      "description" : "Rewrites the declaration and EVERY call site atomically (add / remove / reorder parameters, change the return type, toggle 'as pure'); answers status, edits[] and summary with the call-site count, a blocking call site as conflicts[] (callsite-incompatible-with-new-signature).",
      "name" : "ek9_change_signature",
      "score" : 12.912289698994703
    }, {
      "description" : "Folds a contiguous line range under an if / if-else / try-catch / try-catch-finally / for-range / while head, re-indenting the block per EK9's brace-free rules; answers status and edits[] (one REPLACE carrying the head + the re-indented lines, one DELETE per absorbed line).",
      "name" : "ek9_surround_with",
      "score" : 9.385325655078438
    }, {
      "description" : "Appends a new parameter to the enclosing method/function, replaces the selected in-body expression with it and passes the ORIGINAL expression at every call site (Fowler \"Introduce Parameter\"); answers status, edits[] and conflicts[] (value-expression-not-a-single-expression, type-not-inferable, ...).",
      "name" : "ek9_introduce_parameter",
      "score" : 7.639133477618231
    }, {
      "description" : "Splices EK9 statement(s) into a named method/function/operator body at anchor top, bottom, replace or a body line, re-indented by the tool; answers status, edits[] (one INSERT), insertedLineRange and resultingBodySnippet, or error.problems[] naming the entry that does not parse.",
      "name" : "ek9_insert_statements",
      "score" : 7.535563927934353
    } ],
    "match" : "ambiguous",
    "meta" : {
      "serverMs" : "<timing>"
    },
    "note" : "Several tools fit 'extract a statement range into a new pure function with explicit parameters and return, then replace the block with a call' - re-query with tool:'<one of candidates[].name>'.",
    "status" : "ok"
  },
  "scenario" : "phrase_with_repeated_word",
  "tool" : "query_tool_detail"
}
