Google Drive
Canonical tools, triggers, auth, schemas, and mock behavior for Google Drive.
Run a valid google-drive.create_folder call through the same SDK surface used by every toolkit.
Minimal tool call
import { Eyeball } from "@eyeball/sdk";
const eyeball = new Eyeball({
apiKey: process.env.EYEBALL_API_KEY!,
baseUrl: process.env.EYEBALL_EXECUTOR_URL!,
});
const output = await eyeball.tools.run(
"google-drive.create_folder",
{
"name": "example_name"
},
{ userId: "demo_user",
idempotencyKey: "docs:google-drive.create_folder:demo-1" },
);
console.log(output);The model receives canonical output. Your application retains the execution envelope through tools.execute or the execution APIs when it needs IDs, status, versions, and latency.
Supported canonical tools
| Tool | Purpose | Execution | Effect | Version |
|---|---|---|---|---|
google-drive.create_folder | Create a folder in the provider root or below a selected parent. | sync or async | mutation | 1.0.0 |
google-drive.delete_file | Delete or trash one file or folder. This is destructive and can remove stored content and permissions. | sync or async | destructive mutation | 1.0.0 |
google-drive.download_file | Download file content through the executor's encoded binary transport. | sync or async | read | 1.0.0 |
google-drive.export_document | Export a provider-native document to a requested MIME type and return encoded content. | sync or async | read | 1.0.0 |
google-drive.get_file | Retrieve metadata for one file or folder. | sync or async | read | 1.0.0 |
google-drive.list_files | List files and folders within a parent location, excluding trashed items by default. | sync or async | read | 1.0.0 |
google-drive.move_file | Move a file to a new parent, rename it, or do both. Repeating the same target has no additional effect. | sync or async | mutation | 1.0.0 |
google-drive.search_files | Search provider-indexed file names or metadata and return matching files and folders. | sync or async | read | 1.0.0 |
google-drive.share_file | Create a file permission for a user, group, domain, or anyone. This changes external access to stored content. | sync or async | mutation | 1.0.0 |
google-drive.upload_file | Upload a new file from inline content or a staged Eyeball file. This creates externally visible stored data. | sync or async | mutation | 1.1.0 |
Only the rows above are implemented. A capability tool omitted by this manifest returns not_supported; eyeball never synthesizes provider parity.
Supported canonical triggers
This manifest does not implement a canonical trigger.
Input and output schemas
google-drive.create_folder
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:create_folder:1.0.0:google-drive",
"type": "object",
"description": "Folder name and parent.",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Folder name.",
"minLength": 1
},
"parentId": {
"type": "string",
"description": "Parent folder identifier.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:create_folder:output:1.0.0:google-drive",
"type": "object",
"description": "Newly created folder metadata.",
"additionalProperties": false,
"required": [
"folder"
],
"properties": {
"folder": {
"type": "object",
"description": "Normalized file or folder metadata.",
"additionalProperties": false,
"required": [
"fileId",
"name",
"mimeType",
"isFolder",
"createdAt",
"updatedAt"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file or folder.",
"minLength": 1
},
"name": {
"type": "string",
"description": "File or folder name.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Provider MIME type.",
"minLength": 1
},
"isFolder": {
"type": "boolean",
"description": "Whether this item is a folder."
},
"parentIds": {
"type": "array",
"description": "Parent folder identifiers.",
"items": {
"type": "string"
}
},
"sizeBytes": {
"type": "integer",
"minimum": 0,
"description": "Content size in bytes when exposed."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the item."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent update timestamp."
}
}
}
}
}google-drive.delete_file
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:delete_file:1.0.0:google-drive",
"type": "object",
"description": "File identifier.",
"additionalProperties": false,
"required": [
"fileId"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file or folder.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:delete_file:output:1.0.0:google-drive",
"type": "object",
"description": "Deletion acknowledgement.",
"additionalProperties": false,
"required": [
"fileId",
"deleted"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the deleted item.",
"minLength": 1
},
"deleted": {
"type": "boolean",
"const": true,
"description": "Whether deletion completed."
}
}
}google-drive.download_file
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:download_file:1.0.0:google-drive",
"type": "object",
"description": "File identifier and desired encoding.",
"additionalProperties": false,
"required": [
"fileId"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file.",
"minLength": 1
},
"contentEncoding": {
"type": "string",
"description": "Encoding for returned content.",
"enum": [
"utf8",
"base64"
],
"default": "base64"
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:download_file:output:1.0.0:google-drive",
"type": "object",
"description": "Encoded file content and MIME type.",
"additionalProperties": false,
"required": [
"fileId",
"mimeType",
"content",
"contentEncoding"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Content MIME type.",
"minLength": 1
},
"content": {
"type": "string",
"description": "Encoded file content."
},
"contentEncoding": {
"type": "string",
"enum": [
"utf8",
"base64"
],
"description": "Encoding used for content."
}
}
}google-drive.export_document
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:export_document:1.0.0:google-drive",
"type": "object",
"description": "Native document and target format.",
"additionalProperties": false,
"required": [
"fileId",
"mimeType"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the native document.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Target export MIME type.",
"minLength": 1
},
"contentEncoding": {
"type": "string",
"enum": [
"utf8",
"base64"
],
"default": "base64",
"description": "Encoding for returned content."
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:export_document:output:1.0.0:google-drive",
"type": "object",
"description": "Encoded exported content.",
"additionalProperties": false,
"required": [
"fileId",
"mimeType",
"content",
"contentEncoding"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the source document.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Export MIME type.",
"minLength": 1
},
"content": {
"type": "string",
"description": "Encoded exported content."
},
"contentEncoding": {
"type": "string",
"enum": [
"utf8",
"base64"
],
"description": "Encoding used for content."
}
}
}google-drive.get_file
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:get_file:1.0.0:google-drive",
"type": "object",
"description": "File identifier.",
"additionalProperties": false,
"required": [
"fileId"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file or folder.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:get_file:output:1.0.0:google-drive",
"type": "object",
"description": "Requested file metadata.",
"additionalProperties": false,
"required": [
"file"
],
"properties": {
"file": {
"type": "object",
"description": "Normalized file or folder metadata.",
"additionalProperties": false,
"required": [
"fileId",
"name",
"mimeType",
"isFolder",
"createdAt",
"updatedAt"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file or folder.",
"minLength": 1
},
"name": {
"type": "string",
"description": "File or folder name.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Provider MIME type.",
"minLength": 1
},
"isFolder": {
"type": "boolean",
"description": "Whether this item is a folder."
},
"parentIds": {
"type": "array",
"description": "Parent folder identifiers.",
"items": {
"type": "string"
}
},
"sizeBytes": {
"type": "integer",
"minimum": 0,
"description": "Content size in bytes when exposed."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the item."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent update timestamp."
}
}
}
}
}google-drive.list_files
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:list_files:1.0.0:google-drive",
"type": "object",
"description": "Folder and pagination selectors.",
"additionalProperties": false,
"properties": {
"parentId": {
"type": "string",
"description": "Parent folder identifier; omit for the provider root.",
"minLength": 1
},
"pageSize": {
"type": "integer",
"description": "Maximum number of files to return in one page.",
"minimum": 1,
"maximum": 100,
"default": 50
},
"pageToken": {
"type": "string",
"description": "Opaque continuation token from a previous file page.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:list_files:output:1.0.0:google-drive",
"type": "object",
"description": "One page of files and folders.",
"additionalProperties": false,
"required": [
"files"
],
"properties": {
"files": {
"type": "array",
"description": "Files and folders in the location.",
"items": {
"type": "object",
"description": "Normalized file or folder metadata.",
"additionalProperties": false,
"required": [
"fileId",
"name",
"mimeType",
"isFolder",
"createdAt",
"updatedAt"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file or folder.",
"minLength": 1
},
"name": {
"type": "string",
"description": "File or folder name.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Provider MIME type.",
"minLength": 1
},
"isFolder": {
"type": "boolean",
"description": "Whether this item is a folder."
},
"parentIds": {
"type": "array",
"description": "Parent folder identifiers.",
"items": {
"type": "string"
}
},
"sizeBytes": {
"type": "integer",
"minimum": 0,
"description": "Content size in bytes when exposed."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the item."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent update timestamp."
}
}
}
},
"nextPageToken": {
"type": "string",
"description": "Opaque token to request the next page of files; absent when the result is complete.",
"minLength": 1
}
}
}google-drive.move_file
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:move_file:1.0.0:google-drive",
"type": "object",
"description": "File and new location or name.",
"additionalProperties": false,
"required": [
"fileId"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file.",
"minLength": 1
},
"parentId": {
"type": "string",
"description": "New parent folder identifier.",
"minLength": 1
},
"name": {
"type": "string",
"description": "New file name.",
"minLength": 1
}
},
"minProperties": 2
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:move_file:output:1.0.0:google-drive",
"type": "object",
"description": "Updated file metadata.",
"additionalProperties": false,
"required": [
"file"
],
"properties": {
"file": {
"type": "object",
"description": "Normalized file or folder metadata.",
"additionalProperties": false,
"required": [
"fileId",
"name",
"mimeType",
"isFolder",
"createdAt",
"updatedAt"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file or folder.",
"minLength": 1
},
"name": {
"type": "string",
"description": "File or folder name.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Provider MIME type.",
"minLength": 1
},
"isFolder": {
"type": "boolean",
"description": "Whether this item is a folder."
},
"parentIds": {
"type": "array",
"description": "Parent folder identifiers.",
"items": {
"type": "string"
}
},
"sizeBytes": {
"type": "integer",
"minimum": 0,
"description": "Content size in bytes when exposed."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the item."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent update timestamp."
}
}
}
}
}google-drive.search_files
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:search_files:1.0.0:google-drive",
"type": "object",
"description": "File query and optional parent scope.",
"additionalProperties": false,
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Free-text file search query.",
"minLength": 1
},
"parentId": {
"type": "string",
"description": "Parent folder scope when supported.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Exact MIME type filter.",
"minLength": 1
},
"pageSize": {
"type": "integer",
"description": "Maximum number of matching files to return in one page.",
"minimum": 1,
"maximum": 100,
"default": 50
},
"pageToken": {
"type": "string",
"description": "Opaque continuation token from a previous matching file page.",
"minLength": 1
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:search_files:output:1.0.0:google-drive",
"type": "object",
"description": "One page of matching files.",
"additionalProperties": false,
"required": [
"files"
],
"properties": {
"files": {
"type": "array",
"description": "Matching files and folders.",
"items": {
"type": "object",
"description": "Normalized file or folder metadata.",
"additionalProperties": false,
"required": [
"fileId",
"name",
"mimeType",
"isFolder",
"createdAt",
"updatedAt"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file or folder.",
"minLength": 1
},
"name": {
"type": "string",
"description": "File or folder name.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Provider MIME type.",
"minLength": 1
},
"isFolder": {
"type": "boolean",
"description": "Whether this item is a folder."
},
"parentIds": {
"type": "array",
"description": "Parent folder identifiers.",
"items": {
"type": "string"
}
},
"sizeBytes": {
"type": "integer",
"minimum": 0,
"description": "Content size in bytes when exposed."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the item."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent update timestamp."
}
}
}
},
"nextPageToken": {
"type": "string",
"description": "Opaque token to request the next page of matching files; absent when the result is complete.",
"minLength": 1
}
}
}google-drive.share_file
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:share_file:1.0.0:google-drive",
"type": "object",
"description": "File and permission grant.",
"additionalProperties": false,
"required": [
"fileId",
"type",
"role"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file.",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"user",
"group",
"domain",
"anyone"
],
"description": "Permission principal type."
},
"role": {
"type": "string",
"enum": [
"owner",
"organizer",
"fileOrganizer",
"writer",
"commenter",
"reader"
],
"description": "Granted access role."
},
"email": {
"type": "string",
"format": "email",
"description": "User or group email address."
},
"domain": {
"type": "string",
"description": "Domain receiving access.",
"minLength": 1
},
"discoverable": {
"type": "boolean",
"description": "Whether link discovery is allowed.",
"default": false
}
}
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:share_file:output:1.0.0:google-drive",
"type": "object",
"description": "Created permission metadata.",
"additionalProperties": false,
"required": [
"permissionId",
"fileId",
"type",
"role"
],
"properties": {
"permissionId": {
"type": "string",
"description": "Provider identifier of the permission.",
"minLength": 1
},
"fileId": {
"type": "string",
"description": "Provider identifier of the file.",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"user",
"group",
"domain",
"anyone"
],
"description": "Permission principal type."
},
"role": {
"type": "string",
"enum": [
"owner",
"organizer",
"fileOrganizer",
"writer",
"commenter",
"reader"
],
"description": "Granted access role."
},
"email": {
"type": "string",
"format": "email",
"description": "User or group email address."
},
"domain": {
"type": "string",
"description": "Granted domain.",
"minLength": 1
}
}
}google-drive.upload_file
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:upload_file:1.1.0:google-drive",
"type": "object",
"description": "File metadata and exactly one inline or staged content source.",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "File name.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Content MIME type; staged uploads default to staged metadata and inline uploads default to application/octet-stream.",
"minLength": 1
},
"content": {
"type": "string",
"description": "File content using the selected encoding."
},
"contentEncoding": {
"type": "string",
"description": "Serialization used for inline content.",
"enum": [
"utf8",
"base64"
],
"default": "utf8"
},
"fileId": {
"type": "string",
"description": "Eyeball file_* identifier returned by POST /v1/files.",
"pattern": "^file_[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"
},
"parentId": {
"type": "string",
"description": "Parent folder identifier.",
"minLength": 1
},
"description": {
"type": "string",
"description": "Optional file description."
}
},
"oneOf": [
{
"description": "Use inline content.",
"required": [
"name",
"content"
],
"properties": {
"name": true,
"content": true,
"fileId": false
}
},
{
"description": "Use content from a staged Eyeball file.",
"required": [
"fileId"
],
"properties": {
"content": false,
"fileId": true
}
}
]
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:eyeball:file_storage_docs:upload_file:output:1.1.0:google-drive",
"type": "object",
"description": "Newly uploaded file metadata.",
"additionalProperties": false,
"required": [
"file"
],
"properties": {
"file": {
"type": "object",
"description": "Normalized file or folder metadata.",
"additionalProperties": false,
"required": [
"fileId",
"name",
"mimeType",
"isFolder",
"createdAt",
"updatedAt"
],
"properties": {
"fileId": {
"type": "string",
"description": "Provider identifier of the file or folder.",
"minLength": 1
},
"name": {
"type": "string",
"description": "File or folder name.",
"minLength": 1
},
"mimeType": {
"type": "string",
"description": "Provider MIME type.",
"minLength": 1
},
"isFolder": {
"type": "boolean",
"description": "Whether this item is a folder."
},
"parentIds": {
"type": "array",
"description": "Parent folder identifiers.",
"items": {
"type": "string"
}
},
"sizeBytes": {
"type": "integer",
"minimum": 0,
"description": "Content size in bytes when exposed."
},
"webUrl": {
"type": "string",
"format": "uri",
"description": "Provider web URL for the item."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Most recent update timestamp."
}
}
}
}
}Authentication
| Property | Value |
|---|---|
| Auth class | oauth2 |
| Required scopes | None |
| Optional scopes | None |
| Credential fields | None |
Credentials are resolved inside the executor by CredentialProvider. They never belong in tool input, x_provider, model context, logs, or execution output.
Provider-specific extensions
This manifest declares no provider-specific schema extensions. Use only canonical fields.
Provider differences may appear only under x_provider.google-drive and only when the schema above declares them.
Sync and async behavior
All tools are synchronous by nature, but callers may choose mode: "async" to queue them.
Mutations require a stable Idempotency-Key. The TypeScript SDK accepts it as idempotencyKey; it is never part of the JSON request body.
REST example
curl "$EYEBALL_EXECUTOR_URL/v1/execute" \
-H "Authorization: Bearer $EYEBALL_API_KEY" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: docs:google-drive.create_folder:demo-1' \
--data '{"tool":"google-drive.create_folder","userId":"demo_user","input":{"name":"example_name"},"mode":"sync"}'Mock support
Point EYEBALL_EXECUTOR_URL at a mock-configured executor to run through the real catalog, validation, credential seam, adapter, normalized errors, and execution records with no Google Drive account. Mock selection changes the executor endpoint and trusted provider base-URL configuration, never the execute request.
Limitations
- This page describes the manifest's explicit P0 subset, not every operation offered by the provider.
- Provider account policy, consent UI, quota details, and current wire compatibility still require a real-provider certification pass.
- Fields outside the canonical schemas and declared
x_providerextensions are rejected.
Versions
| Contract | Version |
|---|---|
| Runtime catalog | 1.1 |
| Manifest catalog | 1.0 |
| Manifest schema | 1.0 |
| Source | activepieces-bridge |
| Tier | P0 |
| Capabilities | file_storage_docs |
Next
Use Testing with mocks to exercise this toolkit before connecting a live provider account.