Tool: create_folder
Create a new Dataform folder in a given Google Cloud project and location.
Folders organize Dataform repositories into a hierarchy. Creating a folder doesn't move any repositories into it. To place a repository inside a folder, set the containing_folder parameter value when using the create_repository tool.
Don't attempt to move an existing repository into a folder using the update_repository tool. Once a repository is created, its containing_folder field can't be modified using MCP tools.
The parent parameter value must be in the format projects/{project_id}/locations/{location}.
The folder.display_name parameter value is required and specifies the folder's user-friendly name.
The following code sample shows how to use curl to call the create_folder 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": "create_folder", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
Input Schema
CreateFolder request message.
CreateFolderRequest
| JSON representation |
|---|
{
"parent": string,
"folder": {
object ( |
| Fields | |
|---|---|
parent |
Required. The location in which to create the Folder. Must be in the format |
folder |
Required. The Folder to create. |
folderId |
Deprecated: This field is not used. The resource name is generated automatically. The ID to use for the Folder, which will become the final component of the Folder's resource name. |
Folder
| JSON representation |
|---|
{ "name": string, "displayName": string, "containingFolder": string, "teamFolderName": string, "createTime": string, "updateTime": string, // Union field |
| Fields | |
|---|---|
name |
Identifier. The Folder's name. |
displayName |
Required. The Folder's user-friendly name. |
containingFolder |
Optional. The containing Folder resource name. This should take the format: projects/{project}/locations/{location}/folders/{folder}, projects/{project}/locations/{location}/teamFolders/{teamFolder}, or just "" if this is a root Folder. This field can only be updated through MoveFolder. |
teamFolderName |
Output only. The resource name of the TeamFolder that this Folder is associated with. This should take the format: projects/{project}/locations/{location}/teamFolders/{teamFolder}. If this is not set, the Folder is not associated with a TeamFolder and is a UserFolder. |
createTime |
Output only. The timestamp of when the Folder 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: |
updateTime |
Output only. The timestamp of when the Folder was last updated. 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: |
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
|
|
creatorIamPrincipal |
Output only. The IAM principal identifier of the creator of the Folder. |
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. |
Output Schema
Represents a Dataform Folder. This is a resource that is used to organize Files and other Folders and provide hierarchical access controls.
Folder
| JSON representation |
|---|
{ "name": string, "displayName": string, "containingFolder": string, "teamFolderName": string, "createTime": string, "updateTime": string, // Union field |
| Fields | |
|---|---|
name |
Identifier. The Folder's name. |
displayName |
Required. The Folder's user-friendly name. |
containingFolder |
Optional. The containing Folder resource name. This should take the format: projects/{project}/locations/{location}/folders/{folder}, projects/{project}/locations/{location}/teamFolders/{teamFolder}, or just "" if this is a root Folder. This field can only be updated through MoveFolder. |
teamFolderName |
Output only. The resource name of the TeamFolder that this Folder is associated with. This should take the format: projects/{project}/locations/{location}/teamFolders/{teamFolder}. If this is not set, the Folder is not associated with a TeamFolder and is a UserFolder. |
createTime |
Output only. The timestamp of when the Folder 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: |
updateTime |
Output only. The timestamp of when the Folder was last updated. 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: |
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
|
|
creatorIamPrincipal |
Output only. The IAM principal identifier of the creator of the Folder. |
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. |
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: ❌