{
  "$schema": "../schemas/tool-detail.schema.json",
  "formatVersion": "roslyn-workbench-tool-reference/v1",
  "productVersion": "0.1.0-beta.294",
  "sourceTag": "0.1.0-beta.294",
  "commit": "4c70250e5e02c4109ceff810651918d34513225b",
  "name": "list-code-actions",
  "title": "List Code Actions",
  "area": "CodeAction",
  "category": "Code Actions",
  "operationKind": "Query",
  "summary": "Lists bounded Roslyn code fixes and refactorings for a document, selection or caret.",
  "availability": "Built in and published by default.",
  "documentationUrl": "https://lantean-code.github.io/roslyn-workbench-mcp/0.1.0-beta.294/reference/tools/list-code-actions.html",
  "tool": {
    "name": "list-code-actions",
    "title": "List Code Actions",
    "description": "Lists bounded Roslyn code fixes and refactorings for a document, selection or caret.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "document": {
          "description": "Target document.",
          "type": "object",
          "properties": {
            "project": {
              "description": "Disambiguates documents with matching paths or IDs.",
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "projectId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "path": {
                  "description": "Workspace-relative path.",
                  "type": "string"
                },
                "targetFramework": {
                  "type": "string"
                }
              }
            },
            "path": {
              "description": "Workspace-relative path.",
              "type": "string"
            },
            "documentId": {
              "description": "Workspace-local document ID.",
              "type": "string"
            }
          }
        },
        "range": {
          "description": "The optional selection or caret range. An omitted range selects the complete document.",
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "start": {
              "description": "Zero-based UTF-16 offset.",
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            "length": {
              "description": "UTF-16 code-unit length.",
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            }
          }
        },
        "expectedSnapshot": {
          "type": "object",
          "properties": {
            "workspaceId": {
              "type": "string",
              "format": "uuid"
            },
            "workspaceEpoch": {
              "type": "integer"
            },
            "snapshotId": {
              "type": "string",
              "format": "uuid"
            },
            "transactionRevision": {
              "type": [
                "integer",
                "null"
              ]
            }
          },
          "required": [
            "workspaceId",
            "workspaceEpoch",
            "snapshotId",
            "transactionRevision"
          ],
          "description": "Echo the snapshot returned with the data or transaction state used to construct this request."
        },
        "kinds": {
          "description": "The kinds of actions to discover.",
          "type": "string",
          "enum": [
            "CodeFixes",
            "Refactorings",
            "All"
          ]
        },
        "diagnosticIds": {
          "description": "The optional diagnostic identifier filter for code fixes.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "limit": {
          "description": "The maximum number of action leaves to return.",
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0,
          "maximum": 2147483647,
          "default": 50
        },
        "workspace": {
          "description": "Provide workspaceId, alias, path, or any combination.",
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "workspaceId": {
              "type": "string",
              "format": "uuid"
            },
            "alias": {
              "type": "string"
            },
            "path": {
              "description": "Absolute workspace path.",
              "type": "string"
            }
          }
        }
      },
      "required": [
        "document",
        "expectedSnapshot",
        "kinds"
      ]
    },
    "outputSchema": {
      "type": "object",
      "oneOf": [
        {
          "type": "object",
          "required": [
            "ok",
            "data",
            "snapshot"
          ],
          "properties": {
            "ok": {
              "const": true,
              "description": "Whether the tool invocation succeeded."
            },
            "data": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "actions": {
                  "description": "The returned actions.",
                  "type": "object",
                  "properties": {
                    "items": {
                      "description": "Items returned in this page.",
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "object",
                        "properties": {
                          "actionId": {
                            "description": "The opaque action reference.",
                            "type": "string",
                            "format": "uuid"
                          },
                          "title": {
                            "description": "The display title.",
                            "type": "string"
                          },
                          "kind": {
                            "description": "The action kind.",
                            "type": "string",
                            "enum": [
                              "CodeFix",
                              "Refactoring"
                            ]
                          },
                          "location": {
                            "description": "The precise source location to which the action applies.",
                            "type": "object",
                            "properties": {
                              "document": {
                                "description": "The project-aware source document identity.",
                                "type": "object",
                                "properties": {
                                  "documentId": {
                                    "description": "The document identifier.",
                                    "type": "string"
                                  },
                                  "path": {
                                    "description": "The normalized document path.",
                                    "type": "string"
                                  },
                                  "projectId": {
                                    "description": "The owning project identifier.",
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "documentId",
                                  "path",
                                  "projectId"
                                ]
                              },
                              "span": {
                                "description": "The zero-based UTF-16 source span.",
                                "type": "object",
                                "properties": {
                                  "start": {
                                    "description": "Zero-based UTF-16 offset.",
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 2147483647
                                  },
                                  "length": {
                                    "description": "UTF-16 code-unit length.",
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 2147483647
                                  }
                                }
                              },
                              "line": {
                                "description": "The zero-based source line.",
                                "type": "integer"
                              },
                              "column": {
                                "description": "The zero-based source column.",
                                "type": "integer"
                              }
                            },
                            "required": [
                              "document",
                              "span"
                            ]
                          },
                          "diagnostics": {
                            "description": "Concise diagnostic context for a code fix.",
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "items": {
                                "description": "Items returned in this page.",
                                "type": [
                                  "array",
                                  "null"
                                ],
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "description": "The diagnostic identifier.",
                                      "type": "string"
                                    },
                                    "message": {
                                      "description": "The diagnostic message.",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "message"
                                  ]
                                }
                              },
                              "hasMore": {
                                "description": "Whether additional items were available beyond this page.",
                                "type": "boolean"
                              },
                              "totalCount": {
                                "description": "Complete result count, when available without additional expensive work.",
                                "type": [
                                  "integer",
                                  "null"
                                ]
                              }
                            }
                          },
                          "fixAllScopes": {
                            "description": "The supported Fix All scopes for a code fix.",
                            "type": [
                              "array",
                              "null"
                            ],
                            "items": {
                              "type": "string",
                              "enum": [
                                "Document",
                                "Project",
                                "Solution"
                              ]
                            }
                          }
                        },
                        "required": [
                          "actionId",
                          "title",
                          "kind",
                          "location"
                        ]
                      }
                    },
                    "hasMore": {
                      "description": "Whether additional items were available beyond this page.",
                      "type": "boolean"
                    },
                    "totalCount": {
                      "description": "Complete result count, when available without additional expensive work.",
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              },
              "description": "Tool-specific result payload."
            },
            "snapshot": {
              "type": "object",
              "properties": {
                "workspaceId": {
                  "type": "string",
                  "format": "uuid"
                },
                "workspaceEpoch": {
                  "type": "integer"
                },
                "snapshotId": {
                  "type": "string",
                  "format": "uuid"
                },
                "transactionRevision": {
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "required": [
                "workspaceId",
                "workspaceEpoch",
                "snapshotId",
                "transactionRevision"
              ],
              "description": "Exact immutable workspace snapshot associated with the result, when available."
            }
          }
        },
        {
          "type": "object",
          "required": [
            "ok",
            "error"
          ],
          "properties": {
            "ok": {
              "const": false,
              "description": "Whether the tool invocation succeeded."
            },
            "error": {
              "type": "object",
              "properties": {
                "code": {
                  "description": "Stable machine-readable error code.",
                  "type": "string"
                },
                "message": {
                  "description": "Human-readable explanation of the failure.",
                  "type": "string"
                },
                "correlationId": {
                  "description": "Correlation identifier for matching the failure to server-side diagnostics, when available.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "code",
                "message"
              ],
              "description": "Structured error details when the invocation failed."
            },
            "continuation": {
              "oneOf": [
                {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "tool",
                    "instruction"
                  ],
                  "properties": {
                    "kind": {
                      "const": "CallTool",
                      "description": "Action required before the original request can continue."
                    },
                    "instruction": {
                      "type": "string",
                      "description": "Agent-facing instruction explaining how to continue.",
                      "minLength": 1
                    },
                    "tool": {
                      "type": "string",
                      "description": "Tool to call before continuing the original request.",
                      "minLength": 1
                    }
                  }
                },
                {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "tools",
                    "instruction"
                  ],
                  "properties": {
                    "kind": {
                      "const": "ChooseTool",
                      "description": "Action required before the original request can continue."
                    },
                    "instruction": {
                      "type": "string",
                      "description": "Agent-facing instruction explaining how to continue.",
                      "minLength": 1
                    },
                    "tools": {
                      "type": "array",
                      "description": "Allowed tool choices from which the agent must select one.",
                      "minItems": 1,
                      "uniqueItems": true,
                      "items": {
                        "type": "string",
                        "description": "Name of a tool the agent may choose.",
                        "minLength": 1
                      }
                    }
                  }
                },
                {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "instruction"
                  ],
                  "properties": {
                    "kind": {
                      "const": "RetryRequest",
                      "description": "Action required before the original request can continue."
                    },
                    "instruction": {
                      "type": "string",
                      "description": "Agent-facing instruction explaining how to continue.",
                      "minLength": 1
                    }
                  }
                },
                {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "instruction"
                  ],
                  "properties": {
                    "kind": {
                      "const": "ReviseRequest",
                      "description": "Action required before the original request can continue."
                    },
                    "instruction": {
                      "type": "string",
                      "description": "Agent-facing instruction explaining how to continue.",
                      "minLength": 1
                    }
                  }
                },
                {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "instruction"
                  ],
                  "properties": {
                    "kind": {
                      "const": "ResolveExternally",
                      "description": "Action required before the original request can continue."
                    },
                    "instruction": {
                      "type": "string",
                      "description": "Agent-facing instruction explaining how to continue.",
                      "minLength": 1
                    }
                  }
                }
              ],
              "description": "Action the agent should take before retrying or continuing."
            }
          }
        }
      ]
    },
    "annotations": {
      "title": "List Code Actions",
      "destructiveHint": false,
      "idempotentHint": false,
      "openWorldHint": false,
      "readOnlyHint": true
    }
  },
  "examples": [
    {
      "workflowId": "code-action-change",
      "workflowTitle": "Discover and stage a Code Action",
      "step": 2,
      "id": "discover-code-actions",
      "title": "Discover Code Actions",
      "purpose": "List bounded fixes and refactorings against an exact document snapshot.",
      "expectedOutcome": "At most 20 snapshot-bound Code Action references are returned for the selected document.",
      "representativeResponse": null,
      "request": {
        "document": {
          "path": "src/Sample.cs"
        },
        "expectedSnapshot": {
          "workspaceId": "11111111-1111-1111-1111-111111111111",
          "workspaceEpoch": 1,
          "snapshotId": "22222222-2222-2222-2222-222222222222",
          "transactionRevision": 0
        },
        "kinds": "All",
        "limit": 20,
        "workspace": {
          "alias": "sample"
        }
      }
    }
  ]
}
