Tool: list_workspaces
List the development workspaces in a given Dataform repository.
Use this tool to discover existing workspaces before performing file operations (using tools such as read_file or write_file) or committing code (using a tool such as commit_workspace_changes).
The parent parameter value must be in the format projects/{project_id}/locations/{location}/repositories/{repository}.
The following code sample shows how to use curl to call the list_workspaces MCP tool.
| Curl Request |
|---|
curl --location 'https://dataform.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "list_workspaces", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
Input Schema
ListWorkspaces request message.
ListWorkspacesRequest
| JSON representation |
|---|
{ "parent": string, "pageSize": integer, "pageToken": string, "orderBy": string, "filter": string } |
| Fields | |
|---|---|
parent |
Required. The repository in which to list workspaces. Must be in the format |
pageSize |
Optional. Maximum number of workspaces to return. The server may return fewer items than requested. If unspecified, the server will pick an appropriate default. |
pageToken |
Optional. Page token received from a previous When paginating, all other parameters provided to |
orderBy |
Optional. This field only supports ordering by |
filter |
Optional. Filter for the returned list. |
Output Schema
ListWorkspaces response message.
ListWorkspacesResponse
| JSON representation |
|---|
{
"workspaces": [
{
object ( |
| Fields | |
|---|---|
workspaces[] |
List of workspaces. |
nextPageToken |
A token, which can be sent as |
unreachable[] |
Locations which could not be reached. |
Workspace
| JSON representation |
|---|
{ "name": string, "createTime": string, "dataEncryptionState": { object ( |
| Fields | |
|---|---|
name |
Identifier. The workspace's name. |
createTime |
Output only. The timestamp of when the workspace was created. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
dataEncryptionState |
Output only. A data encryption state of a Git repository if this Workspace is protected by a KMS key. |
privateResourceMetadata |
Output only. Metadata indicating whether this resource is user-scoped. For |
depth |
Optional. Input only. Immutable. The maximum depth of the Git repository to checkout for this workspace. If defined and greater than 0, the Git repository will be created as a shallow clone with the given depth, otherwise a full clone will be performed. This field is available only for GitHub, GitLab and 1p repositories with enabled branch management. |
Union field
|
|
internalMetadata |
Output only. All the metadata information that is used internally to serve the resource. For example: timestamps, flags, status fields, etc. The format of this field is a JSON string. |
Union field
|
|
disableMoves |
Optional. If set to true, workspaces will not be moved if its linked Repository is moved. Instead, it will be deleted. |
Union field
|
|
originalBranch |
Optional. Input only. Immutable. The name of the default upstream branch for all pull/push operations in the remote repository for this workspace. If empty, the HEAD branch from repository will be used. |
Union field
|
|
enableBranchManagement |
Immutable. Controls the enablement of branch checkout for the workspace. When set to True, the workspace will be allowed to checkout branches. |
Union field
|
|
shallow |
Output only. If set to true, the workspace was created as a shallow clone. Will be set to true if the depth field is set to a value greater than 0, otherwise it will be set to false. |
Timestamp
| JSON representation |
|---|
{ "seconds": string, "nanos": integer } |
| Fields | |
|---|---|
seconds |
Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be between -62135596800 and 253402300799 inclusive (which corresponds to 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z). |
nanos |
Non-negative fractions of a second at nanosecond resolution. This field is the nanosecond portion of the duration, not an alternative to seconds. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be between 0 and 999,999,999 inclusive. |
DataEncryptionState
| JSON representation |
|---|
{ "kmsKeyVersionName": string } |
| Fields | |
|---|---|
kmsKeyVersionName |
Required. The KMS key version name with which data of a resource is encrypted. |
PrivateResourceMetadata
| JSON representation |
|---|
{ "userScoped": boolean } |
| Fields | |
|---|---|
userScoped |
Output only. If true, this resource is user-scoped, meaning it is either a workspace or sourced from a workspace. |
Tool Annotations
Tool annotations are sent to MCP clients to describe the basic risk of a given tool. Most clients treat these hints as untrusted, but they can be used to decide when a confirmation prompt might be sent to a user.
Along with the title string, the following boolean hints are defined as follows:
readOnlyHint: If true, the tool doesn't modify its environment. Default: false.destructiveHint: If true, then the tool can perform destructive actions. If false, then the tool can only perform additive actions. Default: true.idempotentHint: If true, then calling the tool repeatedly with the same arguments will have no additional effect on its environment. Default: false.openWorldHint: If true, then the tool can interact with an 'open world' of external entities. If false, then the tool can only interact with internal entities. For example, a web search tool would be open world, while a memory tool would not be open world.
Destructive Hint: ❌ | Idempotent Hint: ✅ | Read Only Hint: ✅ | Open World Hint: ❌