Skip to content

Get Control Flow Graph

get-control-flow-graph · Query · CorePlugin · Code analysis

Returns a bounded control-flow graph with operation metadata and exact source pointers.

Availability: Built in and published in every operational mode.

Generated from Roslyn Workbench MCP 1.0.0-rc.1 (1.0.0-rc.1).

Behaviour annotations

Annotation Value
destructiveHint false
idempotentHint true
openWorldHint false
readOnlyHint true
title "Get Control Flow Graph"

Request

Property Type Required Description
maxBlocks integer | null No The maximum number of projected basic blocks.
maxRegions integer | null No The maximum number of projected flow regions.
maxOperationsPerBlock integer | null No The maximum number of projected operations in each basic block.
symbol object No Symbol whose control-flow graph should be returned.
location object No Source location whose enclosing executable body should be graphed.
expectedSnapshot object | null No Echo the snapshot returned with the data or transaction state used to construct this request.
workspace object | null No Provide workspaceId, alias, path, or any combination.

Response

Success response

Property Type Required Description
ok boolean constant (true) Yes Whether the tool invocation succeeded.
data object | null Yes Tool-specific result payload.
snapshot object Yes Exact immutable workspace snapshot associated with the result, when available.
warnings array No Non-fatal warnings the agent should consider.

Error response

Property Type Required Description
ok boolean constant (false) Yes Whether the tool invocation succeeded.
error object Yes Structured error details when the invocation failed.
continuation oneOf No Action the agent should take before retrying or continuing.
diagnostics array No Diagnostics that explain the failed invocation.
warnings array No Non-fatal warnings the agent should consider.

Error response

Property Type Required Description
ok boolean constant (false) Yes Whether the tool invocation succeeded.
error object Yes Structured error details when the invocation failed.
diagnostics object Yes Diagnostics that explain the failed invocation.
reporting object No Error-reporting workflow available for an unhandled failure.

Bounded collections and continuation

These response locations publish returned items with explicit bounds and continuation state:

  • $/oneOf/0/properties/data/properties/blocks
  • $/oneOf/0/properties/data/properties/blocks/properties/items/items/properties/operations
  • $/oneOf/0/properties/data/properties/regions

Continuations and required actions

A response may include a structured continuation at the following schema location. Follow its tool call or user-action instruction instead of guessing how to continue:

  • $/oneOf/1/properties/continuation
Complete input schema
{
  "description": "Provide exactly one of symbol or location.",
  "type": "object",
  "properties": {
    "maxBlocks": {
      "description": "The maximum number of projected basic blocks.",
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0,
      "maximum": 2147483647,
      "default": 64
    },
    "maxRegions": {
      "description": "The maximum number of projected flow regions.",
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0,
      "maximum": 2147483647,
      "default": 32
    },
    "maxOperationsPerBlock": {
      "description": "The maximum number of projected operations in each basic block.",
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0,
      "maximum": 2147483647,
      "default": 32
    },
    "symbol": {
      "description": "Symbol whose control-flow graph should be returned.",
      "type": "object",
      "properties": {
        "project": {
          "description": "Disambiguates symbols with matching identities.",
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "projectId": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "path": {
              "description": "Workspace-relative path.",
              "type": "string"
            },
            "targetFramework": {
              "type": "string"
            }
          }
        },
        "location": {
          "description": "Provide exactly one of span or selection.",
          "type": "object",
          "properties": {
            "span": {
              "type": "object",
              "properties": {
                "document": {
                  "description": "Provide exactly one of path or documentId.",
                  "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": "Zero-based UTF-16 range.",
                  "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
                    }
                  }
                }
              },
              "required": [
                "document",
                "range"
              ]
            },
            "selection": {
              "type": "object",
              "properties": {
                "document": {
                  "description": "Provide exactly one of path or documentId.",
                  "type": "object",
                  "properties": {
                    "project": {
                      "description": "Disambiguates documents with matching paths or IDs.",
                      "$ref": "#/properties/symbol/properties/location/properties/span/properties/document/properties/project"
                    },
                    "path": {
                      "description": "Workspace-relative path.",
                      "type": "string"
                    },
                    "documentId": {
                      "description": "Workspace-local document ID.",
                      "type": "string"
                    }
                  }
                },
                "selectedText": {
                  "type": "string",
                  "minLength": 1
                },
                "contextBefore": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "contextAfter": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "document",
                "selectedText"
              ]
            }
          }
        },
        "documentationCommentId": {
          "type": "string"
        }
      }
    },
    "location": {
      "description": "Source location whose enclosing executable body should be graphed.",
      "type": "object",
      "properties": {
        "span": {
          "$ref": "#/properties/symbol/properties/location/properties/span"
        },
        "selection": {
          "$ref": "#/properties/symbol/properties/location/properties/selection"
        }
      }
    },
    "expectedSnapshot": {
      "type": [
        "object",
        "null"
      ],
      "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."
    },
    "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"
        }
      }
    }
  }
}
Complete output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "ok",
        "data",
        "snapshot"
      ],
      "properties": {
        "ok": {
          "const": true,
          "description": "Whether the tool invocation succeeded."
        },
        "data": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "owner": {
              "description": "The owning callable symbol.",
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "displayName": {
                  "description": "The display name of the symbol.",
                  "type": "string"
                },
                "kind": {
                  "description": "The symbol kind.",
                  "type": "string"
                },
                "documentationCommentId": {
                  "description": "The documentation comment identifier, when available.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "location": {
                  "description": "The optional source location of the symbol.",
                  "type": [
                    "object",
                    "null"
                  ],
                  "properties": {
                    "document": {
                      "description": "The resolved document.",
                      "type": [
                        "object",
                        "null"
                      ],
                      "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 resolved text span.",
                      "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
                        }
                      }
                    },
                    "line": {
                      "description": "The one-based line number.",
                      "type": "integer"
                    },
                    "column": {
                      "description": "The one-based column number.",
                      "type": "integer"
                    },
                    "snapshot": {
                      "description": "The exact immutable workspace snapshot associated with this location.",
                      "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"
                      ]
                    },
                    "selector": {
                      "description": "The canonical selector that can resolve this source location again.",
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "span": {
                          "type": "object",
                          "properties": {
                            "document": {
                              "description": "Provide exactly one of path or documentId.",
                              "type": "object",
                              "properties": {
                                "project": {
                                  "description": "Disambiguates documents with matching paths or IDs.",
                                  "type": [
                                    "object",
                                    "null"
                                  ],
                                  "properties": {
                                    "projectId": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    },
                                    "name": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    },
                                    "path": {
                                      "description": "Workspace-relative path.",
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    },
                                    "targetFramework": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    }
                                  }
                                },
                                "path": {
                                  "description": "Workspace-relative path.",
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "documentId": {
                                  "description": "Workspace-local document ID.",
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              }
                            },
                            "range": {
                              "description": "Zero-based UTF-16 range.",
                              "type": "object",
                              "properties": {
                                "start": {
                                  "description": "Zero-based UTF-16 offset.",
                                  "type": "integer",